zoukankan      html  css  js  c++  java
  • VS2008.NET对ashx页面防止跨站攻击(XSS)

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

    最近项目中做了一个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.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>

     


     

  • 相关阅读:
    网站负载均衡判断
    端口扫描nmap+masscan
    Ant Design Upload 组件之阻止文件默认上传
    Hybrid App技术解析
    react 路由
    webpack进阶(二)
    webpack进阶(一)
    webpack基础
    Promise原理及实现
    TS——类
  • 原文地址:https://www.cnblogs.com/bdstjk/p/2519855.html
Copyright © 2011-2022 走看看