asp.net - ASP.NET 中的脚本漏洞 - 设置 validateRequest ="true"是个好建议吗?

标签 asp.net security xss antixsslibrary

我正在阅读有关 ASP.NET Script Exploits 的内容,其中一条建议是:
(强调是我的;建议是“防范脚本漏洞”部分中的#3 “在网页中)

If you want your application to accept some HTML (for example, some formatting instructions from users), you should encode the HTML at the client before it is submitted to the server. For more information, see How to: Protect Against Script Exploits in a Web Application by Applying HTML Encoding to Strings.

这不是非常糟糕的建议吗?我的意思是,漏洞利用者可以通过curl 或类似的方式发送HTML,然后HTML 会以未编码的方式发送到服务器,这不太好(?)

我在这里遗漏了什么或者误解了该声明吗?

最佳答案

微软的判决并没有错,但另一方面,他们的判决还很不完整,而且是危险的。

由于默认情况下,validateRequest == true,您确实应该在客户端中对特殊 HTML 字符进行编码,以便它们首先进入服务器并绕过 validateRequest。

但是 - 他们应该强调这当然不能替代服务器端过滤和验证。

具体来说,如果您必须接受 HTML,最强烈的建议是使用白名单而不是黑色过滤(即允许非常特定的 HTML 标记并消除所有其他标记)。使用Microsoft AntiXSS library强烈推荐用于强大的用户输入过滤。这比自己“重新发明轮子”要好得多。

关于asp.net - ASP.NET 中的脚本漏洞 - 设置 validateRequest ="true"是个好建议吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7136864/

相关文章:

javascript - 为什么我们应该注意 Javascript 中的代码注入(inject)?

c# - 任何位置的数字、小数、连字符和括号的正则表达式

asp.net - 在 ASP .NET 2.0 和 SQL Server 2005 中加密 Salary 值

使用 Django csrf_exempt View 注册 Android GCM。最佳实践?

jquery - 在 Javascript 中设置 iframe `src` 会在 Internet Explorer 中引发 'Permission Denied' 错误

character-encoding - 如何绕过 "注入(inject) XSS payload?

c# - asp.net MVC 嵌套模型绑定(bind)错误

asp.net - 为 Azure 存储帐户连接字符串构建连接字符串

database - 使用 ModelForm 时强制某些字段的值

security - 在 iframe 中设置 cookie - 不同的域