【问题标题】:A potentially dangerous Request.Form value was detected from the client从客户端检测到具有潜在危险的 Request.Form 值
【发布时间】:2011-02-26 16:12:44
【问题描述】:

我有一个 asp.net 应用程序,当我在搜索框中输入“: ”等特殊字符时出现了一些问题。如果我在搜索框中输入此文本,我会遇到这样的异常。

从客户端检测到具有潜在危险的 Request.Form 值 (txtValue=": , ")。

然后我在网上搜索,我得到了一个通用的解决方案,将 validaterequest 设置为 false。但是我的申请没有任何改变。请帮我解决这个问题。任何回应将不胜感激。

【问题讨论】:

标签: c# asp.net validate-request


【解决方案1】:

添加一个包含

的web.config
<system.web>
    <pages validateRequest="false" />
</system.web>

到具有相关表单的页面所在的目录。

有关完整说明,请参阅http://www.asp.net/learn/whitepapers/request-validation

如果你使用asp.net 4.0,你可以试试

<httpRuntime requestValidationMode="2.0" />

另见

【讨论】:

  • 嗯,适用于我所有的网络应用程序。您使用 .net 2.0 或更高版本吗?哪个操作系统?
  • .net 3.5 和操作系统是 server 2003 IE8
  • 对不起,在同一个环境中为我工作。我会尝试在干净的网站上重现此行为,以排除其他组件和 web.config 设置。
  • 如果您需要设置ValidateRequest="false",您应该在 指令中逐页设置;否则你可能会在整个应用程序中打开一个安全漏洞。
  • @PhilPursglove 我同意最佳做法是逐页进行 - 除非您知道自己在做什么。 ValidateRequest=true 是针对未正确编码的 Web 应用程序的安全措施。从 www.asp.net 上的上述链接页面:“当应用程序设计为安全处理 HTML 数据时,可以禁用此请求验证功能。”当然,我们正是这样做的,不是吗?!我通常是在目录的基础上做的。如果您使用依赖于该请求验证的 3rd 方组件,则需要特别小心(但无论如何您都不应该使用它们......)。
【解决方案2】:

有点晚了,但与将其放入 web.config 是一个安全漏洞的说法一致。

我使用相关控制器上的[ValidateInput(false)] 属性来实现。

ValidateInput 在 MVC2 中的 System.Web.MVC 中找到

【讨论】:

    【解决方案3】:

    我创建了一个表article,其中包含articleIdarticle_content 列。我还为article_content 列使用了html 编辑器。当我试图保存时,我得到了同样的错误。已通过将[AllowHtml] 添加到类中的article_content 属性来解决。

    不要忘记使用System.Web.Mvc 包含命名空间。更多细节: http://www.infinetsoft.com/Post/A-potentially-dangerous-Request-Form-value-was-detected-from-the-client/1246

    【讨论】:

      【解决方案4】:

      使用 Framework 4.5 解决方案是修改 web.config 添加以下行:

      <httpRuntime requestValidationMode="4.5"/>
      

      获取请求如下:

      string reportXML = this.Request.Unvalidated.Form["reportstream"];
      

      【讨论】:

        猜你喜欢
        • 2010-12-20
        • 1970-01-01
        • 2012-05-29
        相关资源
        最近更新 更多