UrlScan 和请求过滤长 URL

UrlScan 和请求过滤长 URL

我们的Windows/IIS 7.5环境配置为网址扫描IIS 请求过滤。我们一直面临一个与长 URL 相关的问题。

/MyWeb/TestFW/prweb/Servelt1/ZsvSk3vV8PtgJEa4_x3fiQ[[*/!MyWebApp/webwb/desktop_domainsuffix_1819019784.js!yui_13833664524!desktopwrapper_12997951049!automationscripts_1864420987!ui_jquery_1796787788!desktopwrapper_12997951049!automationscripts_1864420987!ui_jquery_1796787788!

注意:我修改了 URL,但这就是结构,如果我将其放入记事本中,它大约有 880 个字节。

UlrScan.ini文件具有“请求限制”部分的所有默认配置:

MaxAllowedContentLength=30000000
MaxUrl=260
MaxQueryString=2048

IIS 的请求过滤也已启用,并且具有默认值:

<security>
   <requestFiltering>
    <requestLimits
       maxAllowedContentLength="30000000"
       maxUrl="4096"
       maxQueryString="2048" 
                  />
  </requestFiltering>
  </security>

我进行了测试,我在帖子顶部提供的 URL 失败,出现 403 错误。该 URL 为 880 字节,因此,如果请求过滤优先,它应该不会失败,所以我假设网址扫描执行时不考虑 IIS 的请求限制。

我曾多次要求我的 IIS 管理员提供 IIS 日志,但无论在哪个共享的日志中,我只看到 403。没有其他 Microsoft 支持文章中提到的 404 或 404.14 错误。

那么我的观察正确吗? 对于这种设置,哪种配置优先? 是 UrlScan 还是 IIS 的请求过滤?

我很想知道是否有一个选项可以让请求过滤优先于网址扫描设置,因为请求过滤在应用程序级别之前是可定制的,而UrlScan.ini仅在站点级别之前是可定制的。

此外,根据 IIS 文档,网址扫描功能正在被纳入 IIS 的请求过滤中,那么为什么最大 URL 的默认值会有如此大的差异呢?urlscan.iniIIS 请求过滤中的 260 字节和 4096 字节。

答案1

UrlScan 在请求到达 IIS 请求过滤模块之前将其停止。理想的和推荐的解决方案是在 IIS 7 及更高版本上停用 UrlScan 并单独使用 IIS 请求过滤模块,IIS 7.5 中的这个模块具有 urlscan 模块的所有功能,所以没有技术原因不使用。但由于我们的管理员对此感到不舒服,我们遵循了下面的方法。将 urlscan 模块中的 maxUrl 增加到 4096,以允许长请求。请求过滤模块可以在默认的网站级别或服务器级别配置,这是全局的,也可以在单个应用程序级别配置。因此,默认的网站级别 urlScan 保留为 460 个字符,这适用于所有应用程序,而在我的应用程序中,请求过滤的 maxUrl 设置为 4096。这样,所有其他 50 个应用程序都具有几年前默认设置的限制,而我的应用程序有更长的长度来处理长请求。

谢谢。

相关内容