我正在寻找保护我们的网站免受 XSS 攻击的方法。在这一点上,我只关心对输入进行消毒/保护。我知道需要对输出进行编码,但这超出了这个问题的范围。
需要记住的几件事:
- 我的网站根本不接受用户生成的 HTML。
- 我已将验证请求设置为 true。
我知道微软建议不要完全依赖验证请求。但是,我想知道为什么。开始一个输入清理项目将需要相当多的时间和金钱,我需要向企业证明这是合理的。
我一直在研究如何攻击验证请求保护的实际示例。我想出的就是这个。但是,我无法在我的网站上复制它。
是 Microsoft 建议您不要依赖验证请求,因为
只有您可以为您的应用程序定义代表良好输入的内容。
我建议您阅读如何:在 ASP.NET指南中防止跨站点脚本。这可能是我从微软那里读到的关于 XSS 的最好的东西。
您可以用来清理输入的另一件事是Microsoft Web Protection Library。很容易将它集成到现有的应用程序中,这是我个人依赖的一个相当成熟的项目。
可以通过对传入参数进行编码以及使用自定义正则表达式验证它们来修复跨站点脚本。
例如:Encode.forhtml(inputparam)
使用 OWASP 编码器有几种类型的基于上下文的编码。如果您不确定编码器或验证模式,请尝试下面的跨站点脚本验证器,以确保正确的修复方法。
Java 的 XSS 验证器:http: //fixforscrossite.us-east-2.elasticbeanstalk.com/