11

IIS (6 または 7) では、ディレクトリ ブラウズが無効になっている場合、IIS はディレクトリ (例: " http://mydomain.com/folder ")をブラウズしようとする試みを検出すると "403 - Forbidden" エラーを返します。

ディレクトリ参照の試行に対して "403" ではなく "404 - Not Found" エラーを返すように IIS を構成する方法はありますか?

これは asp.net Web フォーム サイトです。

私たちのサイトのセキュリティ スキャンでは、"403" を返すと、悪意のある人物が私たちのサイトをマッピングするのに役立つ可能性があることがわかりました。それまでは考えたことがありませんでしたが、それが理にかなっていることは認めざるを得ません。

4

4 に答える 4

3

IIS (7 以降) では、[リクエスト フィルタリング] に移動すると、[隠しセグメント] というタブがあります。非表示にするディレクトリの名前を追加するだけで、404 が返されます。

于 2014-09-04T16:49:01.400 に答える
1

IIS を構成する方法が見つかりませんでしたが、asp.net 汎用ハンドラー ( http://forums.asp.net/p/1478217/3453189.aspx、gvlahakis による回答までスクロールダウン) を使用して回避策を見つけました。 .

まず、404 を返す汎用ハンドラーを作成します。

public class DirectoryBrowsingAttempt : IHttpHandler
{
    public bool IsReusable {get {return true;}
    public void ProcessRequest(HttpContext context) {context.Response.StatusCode = 404;}
}

次に、web.config にタグを追加して、httpHandlers セクションと system.webServer セクションの両方で、保護する必要があるフォルダーごとに 1 つずつ、上記のハンドラーにディレクトリ ブラウズ試行を指示します。以下のタグは、ルートから「js」という名前のフォルダーを保護します。

<httpHandlers>
  <add verb="*" path="js/*" validate="false" type="MyNameSpace.DirectoryBrowsingAttempt"/>
</httpHandlers>
<system.webServer>
<handlers>
  <add name="NoAccess" verb="*" path="js/*"  preCondition="integratedMode" type="MyNameSpace.DirectoryBrowsingAttempt"/>
</handlers>

この回避策は、IIS 6 と IIS 7 では動作が異なります。たとえば、サイトの画像を含むフォルダーを次の方法で保護しました。IIS 6 は、このフォルダーに含まれる画像を Web ページに配信しました (望ましい動作、ディレクトリの閲覧試行をブロックします)。IIS 7 はそれらをブロックしました。

おそらく、web.config の「場所」タブを使用して、デフォルトの画像ハンドラーをオーバーライドすることで画像を提供できるようにする方法がありますが、私はそこまでウサギの穴に行きたくありません。

于 2013-09-17T13:34:02.307 に答える