ASP.NET中自动HtmlEncode

时间:2011-08-21 07:17:48

标签: asp.net encoding

Ruby on Rails(3)被宠坏了,我希望我的所有HTML输出都能自动编码。

我之前问了question about script exploits,我现在想知道,是否有一些ASP.NET设置,插件或扩展会自动导致所有HTML被HtmlEncode编辑或者我有要非常小心并确保我自己?

3 个答案:

答案 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还没有完成。

OWASP Enterprise Security API

答案 1 :(得分:3)

如果您将ASP.NET 4.0与WebForms一起使用,那么使用代码块<%: %>将自动HtmlEncode输出。如果您使用的是Razor引擎,则默认情况下所有数据都是HtmlEncoded。

答案 2 :(得分:1)

默认情况下,ASP.Net不接受Inputcontrol包含html元素的回发。此行为由属性ValidateRequest在页面级别设置。

如果你想接受包含html的回发,你需要在进一步处理之前将ValidateRequest设置为false并在服务器上自己HtmlEncode用户输入