代码之家  ›  专栏  ›  技术社区  ›  Steffen

禁用ASP.Net请求路径验证

  •  1
  • Steffen  · 技术社区  · 14 年前

    已经从ASP.Net从3.5到4.0,我们突然面临这样一个问题:

    潜在的危险请求路径从客户端检测到值(>)。

    它们都是损坏的URL,似乎包含某种HTML或javascript抛出到其他有效的URL上。

    /UI/Forms/Users/Photos/function(val){var result=null;for(var i=0;i<这个。长度;i++){if(this[i]==val){result=this[i];这个。拼接(一)

    正如您所看到的,它是一个相对的URL,在/Photos/之前有效。然而,函数(val)等是来自原型.js通常包括在页面上。

    我们无法重新创建这个问题,但是这会导致数以万计的异常,我们更希望没有这些异常,因为日志记录过程需要时间。此外,过多的“不相关”异常导致我们的日志更难阅读实际问题。

    因此,我认为除了禁用验证之外,我们别无选择—所以问题是如何禁用验证?

    我不想完全禁用请求验证,因为这也会禁用已发布表单值的验证。

    1 回复  |  直到 14 年前
        1
  •  3
  •   Darin Dimitrov    14 年前

    如果此功能是站点的一部分(向某些页面发布特殊字符),则可以将以下内容添加到web.config文件:

    <httpRuntime requestValidationMode="2.0" />
    

    这将禁用标记为的页面的请求验证 ValidateRequest="false" . 在ASP.NET4.0您需要此属性,或者即使禁用页面请求验证,也会得到异常。