我需要审查一个相当大的 .Net 4.0 项目并重构以防止 XSS 攻击。我做的第一件事是打开requestValidation
网站,我还能在全球范围内做些什么,或者这将是一个遍历每个页面、验证输入和对输出进行 html 编码的情况。
有很多页面,可能还有 300 个经典的 asp 页面仍在使用中。
HtmlEncode() 可以安全使用还是我需要安装 Microsoft 的 AntiXSS 包。
我需要审查一个相当大的 .Net 4.0 项目并重构以防止 XSS 攻击。我做的第一件事是打开requestValidation
网站,我还能在全球范围内做些什么,或者这将是一个遍历每个页面、验证输入和对输出进行 html 编码的情况。
有很多页面,可能还有 300 个经典的 asp 页面仍在使用中。
HtmlEncode() 可以安全使用还是我需要安装 Microsoft 的 AntiXSS 包。
requestValidation
是一个很好的方法。
在全球范围内,我能想到的另一件事是在所有 http 响应中启用 X-XSS-Protection 标头。它很容易实现,并为您提供了一些浏览器(IE 8+、Chrome)必须提供的基于 xss 模式的原生防御。X-XSS-Protection: 1; mode=block
您可能会查看 Content-Security-Policy,但我认为在您的场景中,这可能是整个网站的一次大规模推广。
这些是我可以从基于 HTTP 标头的 XSS 缓解中想到的。它们是通用的,并不仅仅适用于 ASP.Net。
Is HtmlEncode() safe to use or do I need to install Microsofts AntiXSS package
从MVC 应用程序中将 encoderType 设置为AntiXssEncoder有什么好处?
AntiXssEncoder 使用白名单方法来识别恶意输入 [导致跨站点脚本 (XSS) 的输入]。
ASP.Net 中的默认编码器使用黑名单方法。
两者都对数据进行输出编码。从安全的角度来看,在识别恶意行为方面,基于白名单的方法应始终优于黑名单方法。
摘自 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 默认编码器无法检测到这些漏洞。