Ruby on Rails(3)被宠坏了,我希望我的所有HTML输出都能自动编码。
我之前问了question about script exploits,我现在想知道,是否有一些ASP.NET设置,插件或扩展会自动导致所有HTML被HtmlEncode
编辑或者我有要非常小心并确保我自己?
答案 0 :(得分:4)
各种ASP.NET控件使用HtmlEncode自动编码HTML(还有一些使用UrlEncode进行URL编码),但它不是通用的。这是一个控件列表以及它们自动执行的编码(如果有)。我不知道它是否针对.NET 4.0进行了更新:
Which ASP.NET Controls Automatically Encodes?(此链接会要求您保存文档)
这是上述文件来自的博客:
http://blogs.msdn.com/b/sfaust/archive/2008/09/02/which-asp-net-controls-automatically-encodes.aspx
它最初发布于2008年9月,所以它可能是2.0的当前版本,但不一定是4.0。尽管如此,IMO仍然是一个有用的资源。
您还应该查看Microsoft Anti-Cross Site Scripting Library 3.1。
正如balexandre所指出的,Anit-XSS库现在似乎是开源Web保护库的一部分:
Microsoft Web Protection Library
此外,OWASP是一个很好的安全信息资源,它们有一个企业安全API项目(ESAPI),可以在不同程度上以各种编程语言提供。我相信,.NET还没有完成。
答案 1 :(得分:3)
如果您将ASP.NET 4.0与WebForms一起使用,那么使用代码块<%: %>
将自动HtmlEncode输出。如果您使用的是Razor引擎,则默认情况下所有数据都是HtmlEncoded。
答案 2 :(得分:1)
默认情况下,ASP.Net不接受Inputcontrol包含html元素的回发。此行为由属性ValidateRequest在页面级别设置。
如果你想接受包含html的回发,你需要在进一步处理之前将ValidateRequest设置为false并在服务器上自己HtmlEncode用户输入