假如项目在前期没有过滤客户提交的字符,那么可以在输出的时候,对输出的字符进行过滤,防止出现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());

最新文章

  1. 转-阿里云CentOS Linux服务器上用postfix搭建邮件服务器
  2. vba中MsgBox的参数及用法
  3. Java 日志管理最佳实践
  4. Java核心 --- 泛型
  5. .net求两个数的最大公约数和最小公倍数
  6. html table 知识点
  7. RFID系统的选择
  8. USACO inflate
  9. Memcached【第一篇】安装
  10. ubuntu常见错误--Could not get lock /var/lib/dpkg/lock解决
  11. Java——面向对象
  12. 《c#图解教程》
  13. HDU 1403 Longest Common Substring(最长公共子串)
  14. InnoDB存储引擎介绍-(3)InnoDB缓冲池配置详解
  15. openssl RSA加密方法初识
  16. Remon Spekreijse CSerialPort串口类的修正版2014-01-10
  17. Spider Studio 新版本 (码年吉祥版) - 浏览器视图 / 脚本库上线!
  18. tp5.1升级
  19. web应用后台发生的事
  20. UVALive 7040 Color

热门文章

  1. HDU 5446 中国剩余定理+lucas
  2. python练手项目
  3. HTML meta 标签用法(转)
  4. Core Data浅谈初级入门
  5. SPARK SQL 中registerTempTable与saveAsTable的区别
  6. 编程:递归编程解决汉诺塔问题(用java实现)
  7. python 3 学习笔记(一)
  8. Ogre中OIS的输入的使用
  9. unity官方换装教程Character Customization 学习笔记
  10. chosen组件实现下拉框