【问题标题】:Alternative to ValidateRequest="false"ValidateRequest="false" 的替代方案
【发布时间】:2012-10-01 06:30:40
【问题描述】:

除了设置ValidateRequest="false"之外,有没有办法防止“从客户端检测到潜在危险的Request.Form值”错误?

更新:我删除了“页面上”部分。我不想在页面或 web.config 中使用 ValidateRequest="false"

【问题讨论】:

    标签: asp.net http-post validate-request


    【解决方案1】:

    查看新的ASP.NET 4.5 request validation features

    如果你设置了

    <httpRuntime requestValidationMode="4.5" ... />
    

    在您的 web.config 中,值只会在您访问它们时得到验证。这称为延迟验证

    您还可以通过

    获取未经验证的值
    var s = context.Request.Unvalidated.Form["forum_post"];
    

    【讨论】:

    • 谢谢。我现在卡在 4.0 上,但这是很好的信息。
    【解决方案2】:

    1 您还可以在输入中添加 javascript 验证

    2 您可以添加自定义验证器

    【讨论】:

      【解决方案3】:

      是的,您可以在 web.config 中全局执行此操作。

      如果您运行的是 .net 4.0,您可以将其添加到您的 web.config 中

      <httpRuntime requestValidationMode="2.0"/>
      

      或者你可以添加这个

      <pages validateRequest="false" /> 
      

      【讨论】:

        【解决方案4】:

        您可以通过编辑 web.config 文件为整个应用程序禁用它

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

        这将有助于了解您是否只想抑制错误,或者是否想阻止它从一开始就被引发。如果您想阻止它,请在提交表单之前清理您的输入(使用 javascript 或验证器)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多