web-dev-qa-db-ja.com

IISでHTTP OPTIONS、TRACE、HEAD、COPY、UNLO​​CKメソッドを無効にします

セキュリティ上の理由から、これらのメソッドをアプリケーションレベルで無効にしたいので、このweb.configファイルがあります

<configuration>
<location path="index.php">
<system.webServer>
            <directoryBrowse enabled="false" />
</system.webServer>

<system.web>
    <authorization>
        <deny verbs="OPTIONS" users="*" />
        <deny verbs="TRACE" users="*" />
        <deny verbs="HEAD" users="*" />
        <deny verbs="PROPFIND" users="*" />
        <deny verbs="COPY" users="*" />
        <deny verbs="LOCK" users="*" />
        <deny verbs="UNLOCK" users="*" />
        <deny verbs="PROPPATCH" users="*" />
        <deny verbs="MKCOL" users="*" />
        <deny verbs="MOVE" users="*" />
        <deny verbs="DELETE" users="*" />
    </authorization>
</system.web>

しかし、これは何のアイデアもうまくいきませんでしたか?

20
Samy Massoud

これは私にとってはうまくいきましたが、特定の動詞をデフォルトのハンドラーで処理するように強制した後のみです。

<system.web>
...
  <httpHandlers>
  ... 
    <add path="*" verb="OPTIONS" type="System.Web.DefaultHttpHandler" validate="true"/>
    <add path="*" verb="TRACE" type="System.Web.DefaultHttpHandler" validate="true"/>
    <add path="*" verb="HEAD" type="System.Web.DefaultHttpHandler" validate="true"/>

上記と同じ構成を引き続き使用しますが、動詞をデフォルトのハンドラーで処理して検証することも強制します。ソース: http://forums.asp.net/t/1311323.aspx

テストする簡単な方法は、GETを拒否して、サイトがロードされるかどうかを確認することです。

6
BrutalDev

最後に、この問題に対する別の答えを見つけました。これは私のために働いています。以下のデータをwebconfigファイルに追加するだけです。

<configuration>
 <system.webServer>
  <security>
   <requestFiltering>
    <verbs allowUnlisted="true">
     <add verb="OPTIONS" allowed="false" />
    </verbs>
   </requestFiltering>
  </security>
 </system.webServer>
</configuration>

詳細については、次のWebサイトにアクセスしてください。 http://www.iis.net/learn/manage/configuring-security/use-request-filtering

あなたのウェブサイトをテストしたい場合、それは機能しているかどうか...あなたは "HttpRequester" mozilla firefoxプラグインを使用できます。このプラグインの場合: https://addons.mozilla.org/En-us/firefox/addon/httprequester/

33
Mahmut EFE

IIS Managerを使用してUIオプションを探している人向け。

  1. IIS ManagerでWebサイトを開きます
  2. Request Filteringに移動し、Request Filteringウィンドウを開きます。
  3. Verbsタブに移動し、HTTP Verbを「Allow Verb ...」または「Deny Verb ...」に追加します。これにより、「Deny Verb ..」コレクションにHTTP動詞を追加できます。

IIS ManagerRequest Filtering Window in IIS Manager

動詞を追加...または動詞を拒否...enter image description here

3
Abhinav Galodha

これはすべての偽動詞を無効にし、GETとPOSTのみを許可します

<system.webServer>
  <security>
    <requestFiltering>
      <verbs allowUnlisted="false">
    <clear/>
    <add verb="GET" allowed="true"/>
    <add verb="POST" allowed="true"/>
      </verbs>
    </requestFiltering>
  </security>
</system.webServer>
0
Chris Ji