【问题标题】:Special character causes "A potentially dangerous Request.Form value"特殊字符导致“潜在危险的 Request.Form 值”
【发布时间】:2012-10-17 15:10:12
【问题描述】:

我正在为特定需求构建一个脚注编辑器,我需要一个显示特殊字符的下拉列表,例如匕首 (†)。不确定它是否重要,但下拉列表采用 ajax 模式弹出形式。每当我尝试显示弹出表单时,都会收到错误消息“从客户端检测到具有潜在危险的 Request.Form 值 (ctl00$MainContent$ucFootNoteList$DropDownList1="*, †")。"

我尝试添加 到 Web.config 文件。

如何在这种情况下显示特殊字符而不出现此错误?

【问题讨论】:

  • 您使用的是 net 4 吗?如果没有,请尝试使用 validateRequest=false。如果是,请尝试检查您的 web.config

标签: asp.net


【解决方案1】:

您可以在相应 WebForm 的 Page header 上设置 validateRequest 属性来禁用请求验证并允许发布 HTML 字符:

<%@ Page validateRequest="false" %>

这也可以为 web.config 中的所有 WebForm 全局完成:

<pages validateRequest="false" />

这里是 MSDN 上的 an article,您可以在其中阅读有关 ASP.NET 中的请求验证的更多信息。

【讨论】:

  • 谢谢大家。我暂时使用它,让项目负责人决定特殊字符是否重要到足以关闭验证。
【解决方案2】:

您可以禁用 ValidateRequest 属性,但 [非常重要!] 请使用 AntiXss 之类的库清理您的输入,例如:

http://wpl.codeplex.com/

否则您将容易受到输入攻击(注入、xss 等)

事实上,你的请求是“潜在危险”的原因是因为运行时认为有些人试图注入一些 HTML,这就是你不能插入的原因

【讨论】:

    【解决方案3】:

    禁用 ASP.NET 请求验证功能。为此,在网页的 .aspx 文件中,设置此处显示的 Page ValidateRequest 设置。

    <%@ Page ValidateRequest="false"%>
    

    或者,在 Web 应用程序的 Web.config 文件中,将该部分的 validateRequest 属性设置为 false。

    <configuration>
        <system.web>
            <pages validateRequest="false" />
            </system.web>
        </configuration>
    

    来源:http://msdn.microsoft.com/en-us/library/ee517280.aspx

    【讨论】:

      猜你喜欢
      • 2011-11-09
      • 1970-01-01
      • 2010-12-25
      • 2010-09-21
      • 2011-03-30
      • 1970-01-01
      相关资源
      最近更新 更多