防止跨站点的XSS攻击

时间:2014-11-19 09:35:37

标签: .net xss antixsslibrary

我需要审查相当大的.Net 4.0项目并重新考虑以防止XSS攻击。我做的第一件事就是打开网站的requestValidation,我还能在全球范围内做些什么,或者这是一个拖网浏览每一页,验证输入和html编码输出的情况

有很多页面,可能仍在使用300个经典的asp页面。

HtmlEncode()是否可以安全使用,或者我是否需要安装Microsofts AntiXSS软件包。

1 个答案:

答案 0 :(得分:1)

requestValidation是一种很好的方法。

  1. 在全球范围内,我能想到的另一件事是在所有http响应中启用X-XSS-Protection标头。它很容易实现,并为您提供了一些基于xss模式的浏览器(IE 8 +,Chrome)必须提供的本机防御。 X-XSS-Protection: 1; mode=block

  2. 您可以查看Content-Security-Policy,但我认为在您的方案中,它可能是整个网站的重要推广。

  3. 这些是我可以从基于HTTP头的XSS缓解中想到的。它们是通用的,不仅适用于ASP.Net。

    What is the benefit to make encoderType to AntiXssEncoder in a MVC application?

    回答您的其他问题Is HtmlEncode() safe to use or do I need to install Microsofts AntiXSS package
      

    AntiXssEncoder使用白名单方法识别恶意输入   [导致跨站点脚本(XSS)的输入]。

         

    ASP.Net中的默认编码器使用黑名单方法。

         

    两者都对数据进行输出编码。从安全的角度来看a   基于白名单的方法应始终优先于黑名单   识别恶意的方法。

         

    摘录自   http://weblogs.asp.net/jongalloway/using-antixss-4-1-beta-as-the-default-encoder-in-asp-net

         

    1.由于使用白名单方法,AntiXSS本质上更安全。许多安全审核和认证都要求您使用   白名单XSS编码器因为黑名单总是潜在的   易受未知攻击。

         

    2.内置的浏览器有更好的XSS过滤功能,但旧版浏览器存在漏洞(例如UTF-7字符集切换)   不会被ASP.NET默认编码器检测到。