18

我想让用户只在一个文本框中输入 HTML。我了解可以ValidateRequest将 page 指令更改为 false 以取消保护。

我猜这允许在页面上的任何文本框中输入 HTML。无论如何ValidateRequest="false"只适用于单个控件吗?

谢谢你的帮助。

4

3 回答 3

19

不,请求验证是针对整个请求的,或者什么都不是。

验证被添加为默认设置,以保护对输入验证一无所知的开发人员。如果您知道所有输入都必须被视为不安全,并且知道如何正确编码您从输入中使用的数据以保护自己免受 SQL 注入和跨站点脚本等攻击,您可以关闭验证。

编辑:

更新:在 .NET 4.5 中添加了该ValidateRequestMode属性,它允许从页面全局验证中排除控件。

于 2010-03-18T01:10:55.523 回答
5

.NET 4.5 中的新功能:您可以ValidateRequestMode="Disabled"在控件上进行设置。请参阅MSDN

于 2012-11-01T16:28:50.763 回答
0

尝试关闭 ValidateRequest 并使用此方法从每个单独的控件/参数中删除标记:

public static string RemoveMarkUp(this string s) {
   return Regex.Replace(s, @"<[a-zA-Z\/][^>]*>", string.Empty);
}
于 2010-03-18T01:28:01.140 回答