私たちのWindows/IIS 7.5環境は次のように構成されているURLスキャンそして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バイトなので、リクエストフィルタリングが優先されていれば失敗しないはずなので、URLスキャンIIS の要求制限を考慮せずに実行されます。
私は IIS 管理者に IIS ログを提供するよう数回依頼しましたが、共有されたログには 403 しか表示されませんでした。他のすべての Microsoft サポート記事に記載されている 404 または 404.14 エラーは表示されませんでした。
私の観察は正しいでしょうか? このような設定では、どの構成が優先されますか? UrlScan ですか、それとも IIS の要求フィルタリングですか?
リクエストフィルタリングを優先させるオプションがあるかどうか知りたいですURLスキャン設定は、リクエスト フィルタリングがアプリケーション レベルまでカスタマイズ可能であるのに対し、 はUrlScan.ini
サイト レベルまでしかカスタマイズできないためです。
また、IISのドキュメントによると、URLスキャン機能が IIS の要求フィルタリングに組み込まれていますが、最大 URL のデフォルト値に大きな違いがあるのはなぜでしょうか。IIS の要求フィルタリングでは 260 バイトurlscan.ini
、IIS の要求フィルタリングでは 4096 バイトです。
答え1
UrlScan は、要求が IIS 要求フィルタリング モジュールに到達する前に要求を停止します。理想的で推奨される解決策は、UrlScan を廃止し、IIS 7 以上で IIS 要求フィルタリング モジュールのみを使用することです。IIS 7.5 のこのモジュールには、urlscan モジュールのすべての機能が備わっているため、廃止しない技術的な理由はありません。しかし、管理者がそれに納得できなかったため、以下のアプローチを採用しました。urlscan モジュールの maxUrl を 4096 に増やして、長い要求を許可します。要求フィルタリング モジュールは、既定の Web サイト レベルまたはサーバー レベルで構成できます。これはグローバルであり、個々のアプリケーション レベルでも構成できます。したがって、既定の Web サイト レベルの urlScan は 460 文字のままで、これはすべてのアプリケーションに適用され、私のアプリケーションでは、要求フィルタリングの maxUrl は 4096 に設定されています。このようにして、他の 50 のアプリケーションすべてに数年前に既定で設定された制限が適用され、私のアプリケーションは長い要求を処理するためにより多くの長さを持つことになります。
ありがとう。