我們的Windows/IIS 7.5環境配置為網址掃描和IIS 請求過濾。我們一直面臨長網址的問題。
/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。
那我的觀察正確嗎?對於這種設置,哪個配置優先?是UrlScan還是IIS的請求過濾?
我很想知道是否有一個選項可以使請求過濾優先於網址掃描設置,因為請求過濾在應用程式層級之前是可自訂的,而 as 則UrlScan.ini
只能在網站層級之前自訂。
而且,根據 IIS 文檔,網址掃描IIS 的請求過濾功能正在被納入其中,那麼為什麼 max url 的預設值之間存在巨大差異呢?urlscan.ini
IIS 的請求過濾中分別有260 位元組和 4096 位元組。
答案1
UrlScan 在請求到達 IIS 請求過濾模組之前停止請求。理想且建議的解決方案是停用 UrlScan 並在 IIS 7 及更高版本上單獨使用 IIS 請求過濾模組,IIS 7.5 中的此模組具有 urlscan 模組的所有功能,因此沒有技術原因不停用。但由於我們的管理員對此不滿意,我們採用了以下方法。將 urlscan 模組中的 maxUrl 增加到 4096,以允許較長的請求。請求過濾模組可以在預設網站層級或全域伺服器層級配置,也可以在單一應用程式層級配置。因此,預設網站層級urlScan 保留為460 個字符,適用於所有應用程序,在我的應用程式中,請求過濾的maxUrl 設定為4096。 ,我的應用程式具有更長的長度來滿足冗長的請求。
謝謝。