防止ASP.Net Webforms中的XSS:为什么Validate Request不够用?

时间:2013-05-15 14:25:14

标签: security xss webforms

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

要记住的一些事情:

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

我知道Microsoft recommends不依赖于Validate Request。但是,我想知道为什么。启动输入消毒项目将需要相当多的时间和金钱,这是我需要为企业辩护的。

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

2 个答案:

答案 0 :(得分:3)

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

  

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

我建议您阅读How To: Prevent Cross-Site Scripting in ASP.NET指南。这可能是我从微软那里读到的关于XSS主题的最好的东西。

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

答案 1 :(得分:0)

可以通过对参数进行编码以及使用自定义正则表达式验证参数来修复跨站点脚本。

例如:Encode.forhtml(inputparam)

使用 OWASP 编码器的基于上下文的编码有多种类型。如果您不确定编码器或验证模式,请尝试以下跨站点脚本验证器以确保工作(正确)修复方法。

Java 的 XSS 验证器:http://fixforscrossite.us-east-2.elasticbeanstalk.com/