ASP.NET中的自动HTML代码

ASP.NET中的自动HTML代码,asp.net,encoding,Asp.net,Encoding,由于RubyonRails(3)的破坏,我希望所有HTML输出都能自动编码 我之前问过这个问题,现在想知道,ASP.NET是否有一些设置、插件或扩展会自动导致所有HTMLHtmlEncode,还是我必须非常小心并确保我自己?各种ASP.NET控件会自动用HtmlEncode编码HTML(还有一些使用UrlEncode进行URL编码),但它不是通用的。下面是控件列表以及它们自动执行的编码(如果有)。我不知道是否为.NET 4.0更新了它: (此链接将要求您保存文档) 这是上述文档的来源博客: 它

由于RubyonRails(3)的破坏,我希望所有HTML输出都能自动编码


我之前问过这个问题,现在想知道,ASP.NET是否有一些设置、插件或扩展会自动导致所有HTML
HtmlEncode
,还是我必须非常小心并确保我自己?

各种ASP.NET控件会自动用HtmlEncode编码HTML(还有一些使用UrlEncode进行URL编码),但它不是通用的。下面是控件列表以及它们自动执行的编码(如果有)。我不知道是否为.NET 4.0更新了它:

(此链接将要求您保存文档)

这是上述文档的来源博客:

它最初发布于2008年9月,所以它可能是2.0版的最新版本,但不一定是4.0版。尽管如此,IMO仍然是一个有用的资源

你也应该看看这个

正如balexandre所指出的,Anit XSS库现在似乎是开源Web保护库的一部分:

另外,它是一个很好的安全信息资源,他们有一个企业安全API项目(ESAPI),可以(在不同程度上)在各种编程语言中使用


如果您在WebForms中使用ASP.NET 4.0,则使用代码块将自动对输出进行HtmlEncode。如果您使用Razor引擎,则默认情况下所有数据都是HtmlEncode。

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


如果要接受包含html的回发,则需要将ValidateRequest设置为false,并在继续操作之前在服务器上对用户输入进行HtmlEncode

Razor是与WebForms一起使用还是与ASP.NET MVC一起使用?Razor是一个引擎视图,不,您不能在WebForms上使用它,请按住…可以;)plz read-->@balexandre,反xss库是一个开源项目,但没有得到我的M$的支持/认可?据我所知,Microsoft的反xss库不是开源的,但它肯定得到了(我相信是由开发的)的支持Microsoft。我假设它是开源的,因为@balexandre在编辑您的答案时链接到了中。AntiXSS库是开源的,它包含在Microsoft Web保护库中。@@balexandre-这是版本4.0;我链接到了3.1版。很高兴知道-谢谢。我说的“需要”是指“应该”。您只需禁用EnableEventValidation并接受包含html的回发,然后再次将它们打印给用户(例如,在注释系统中)。因此ASP.Net不会阻止您这样做,但在这种情况下,最好在再次打印用户输入之前对其进行HTMLEncode。@citronas,您错误地引用了EnableEventValidation属性,而不是ValidateRequest。EnableEventValidation用于与ASP.NET在回发时在下拉列表或其他列表控件中接受的值相关的一组不同功能。我试图编辑你的答案以使其正确,但被拒绝。@Chris Porter:谢谢你指出这个问题。我编辑了我的答案。我确实看到了你的编辑请求,但显然我无法接受你的请求,因为四分之三的人拒绝了它。我给了你一票,这样你现在就有了足够的声誉,可以自己编辑答案;)@柠檬酸,谢谢!我差一点就到了,谢谢你的帮忙!!