在 ASP.Net Webforms 中防止 XSS:为什么验证请求还不够?

mko*_*man 7 security xss webforms

我正在寻找保护我们的网站免受 XSS 攻击的方法。在这一点上,我只关心消毒/保护输入。我知道需要对输出进行编码,但这超出了这个问题的范围。

需要牢记以下几点:

  • 我的网站根本不接受用户生成的 HTML。
  • 我已将验证请求设置为 true。

我知道 Microsoft建议不要只依赖 Validate Request。但是,我想知道为什么。开始输入消毒项目将涉及大量的时间和金钱,我需要向业务证明这些。

我一直在研究如何攻击验证请求保护的实际示例。我想出的就是这个。但是,我一直无法在我的网站上重现它。

Ale*_*kiy 6

是的 Microsoft 建议您不要依赖验证请求,因为

只有您可以定义什么代表您的应用程序的良好输入。

我建议您阅读如何:防止 ASP.NET指南中的跨站点脚本。这可能是我从 Microsoft 读到的关于 XSS 主题的最好的文章。

您可以用来清理输入的另一件事是Microsoft Web Protection Library。将它集成到现有应用程序中很容易,这是我个人非常依赖的一个非常成熟的项目。

  • 很公平。然后我会将我的问题改写为“什么时候验证请求足够,什么时候不够?”。微软的声明似乎表明它*永远*不够,这意味着上下文无关紧要。 (2认同)