【发布时间】:2012-07-05 06:51:02
【问题描述】:
我有一个用 HTML 填充的隐藏字段,用于在页面加载时出现模式弹出框。 但是,在回发时,隐藏字段的内容会出现异常:
A potentially dangerous Request.Form value was detected from the client (ctl00$MainContentCP$hfContent="<div>
我知道您可以使用以下方法禁用整个页面的验证:
validateRequest="false"
但由于此页面有一些我想保护免受脚本攻击的文本字段,这可能不是正确的解决方案。
我可以以某种方式仅对隐藏字段禁用验证吗?
导致异常的代码:
<asp:HiddenField ID="hfContent" runat="server" />
if (!Page.IsPostBack)
{
Pages pages = new Pages();
hfContent.Value = pages.getPageById(14).PageContent; //this
}
【问题讨论】:
-
小提示:脚本攻击只能通过编码输出而不是输入来预防。 您应该已经对所有输出进行了编码。 然后您不必担心输入,至少就 XSS 攻击而言。验证可防止无效数据进入,因此您应该使用常规的验证器控件,但 IMO validateRequest 不是绝对必要的,如果您正在对所有输出进行编码,您可以安全地为页面禁用它。
-
你用的是什么asp.net框架版本?
-
@DavidStratton:好吧,我认为它也验证了输出。对于输出验证,我应该使用 Server.HtmlEncode() 还是你会建议什么?
-
@ElYusubov:我使用的是 4.0 ASP.NET
-
Server.HtmlEncode 可以,但我更喜欢 Microsoft Anti-Xss 库。它使用白名单方法,并提供额外的功能,如 GetSafeHtmlFragemnt(),让无害的 html 标签通过未编码。 msdn.microsoft.com/en-us/security/aa973814.aspx
标签: c# asp.net validation request