利用微软AntiXss Library过滤输出字符,防止XSS攻击
2024-10-14 10:26:11
假如项目在前期没有过滤客户提交的字符,那么可以在输出的时候,对输出的字符进行过滤,防止出现XSS跨域攻击。
原理简单:利用ASP.NET API的管道原理,在MessageHandlers中添加一个自定义的处理环节。
好了,源代码如下:
public class MessageFilterOutputHandler : MessageHandler
{
protected override async Task OutgoingMessageAsync(HttpResponseMessage message)
{
var ps = await message.Content.ReadAsStringAsync();
ps = AntiXssEncoder.HtmlEncode(ps, false);
message.Content = new StringContent(ps);
}
}
public abstract class MessageHandler : DelegatingHandler
{
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
var response = await base.SendAsync(request, cancellationToken); await OutgoingMessageAsync(response); return response;
}
protected abstract Task OutgoingMessageAsync(HttpResponseMessage message);
}
其中,OutgoingMessageAsync方法中,利用了微软的AntiXss类库,防止输出:<script>,<iframe>等敏感字符。
另外,Global文件中,在Application_Start方法中添加,对MessageFilterOutputHandler的调用。
GlobalConfiguration.Configuration.MessageHandlers.Add(new MessageFilterOutputHandler());
最新文章
- 转-阿里云CentOS Linux服务器上用postfix搭建邮件服务器
- vba中MsgBox的参数及用法
- Java 日志管理最佳实践
- Java核心 --- 泛型
- .net求两个数的最大公约数和最小公倍数
- html table 知识点
- RFID系统的选择
- USACO inflate
- Memcached【第一篇】安装
- ubuntu常见错误--Could not get lock /var/lib/dpkg/lock解决
- Java——面向对象
- 《c#图解教程》
- HDU 1403 Longest Common Substring(最长公共子串)
- InnoDB存储引擎介绍-(3)InnoDB缓冲池配置详解
- openssl RSA加密方法初识
- Remon Spekreijse CSerialPort串口类的修正版2014-01-10
- Spider Studio 新版本 (码年吉祥版) - 浏览器视图 / 脚本库上线!
- tp5.1升级
- web应用后台发生的事
- UVALive 7040 Color