【发布时间】:2011-01-28 20:20:42
【问题描述】:
我想让用户只在一个文本框中输入 HTML。我知道可以将页面指令中的 ValidateRequest 更改为 false 以取消保护。
我猜这允许在页面上的任何文本框中输入 HTML。有没有办法只在一个控件上应用ValidateRequest="false"?
感谢您的帮助。
【问题讨论】:
我想让用户只在一个文本框中输入 HTML。我知道可以将页面指令中的 ValidateRequest 更改为 false 以取消保护。
我猜这允许在页面上的任何文本框中输入 HTML。有没有办法只在一个控件上应用ValidateRequest="false"?
感谢您的帮助。
【问题讨论】:
.NET 4.5 中的新功能:您可以在控件上设置ValidateRequestMode="Disabled"。见MSDN。
【讨论】:
不,请求验证是针对整个请求或什么都不做。
默认添加了验证,以保护对输入验证一无所知的开发人员。如果您知道所有输入都必须被视为不安全,并且知道如何正确编码您从输入中使用的数据以保护自己免受 SQL 注入和跨站点脚本等攻击,您可以关闭验证。
更新:在 .NET 4.5 中添加了 ValidateRequestMode property,它允许从页面全局验证中排除控件。
【讨论】:
尝试关闭 ValidateRequest 并使用此方法从每个单独的控件/参数中删除标记:
public static string RemoveMarkUp(this string s) {
return Regex.Replace(s, @"<[a-zA-Z\/][^>]*>", string.Empty);
}
【讨论】: