2013-09-16 14 views
5

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

ディレクトリ閲覧の試行で「403」ではなく「404 - Not Found」エラーを返すようにIISを構成する方法はありますか。

これはasp.net webformsサイトです。

私たちのサイトのセキュリティスキャンでは、 "403"を返すと悪意のある人物が私たちのサイトにマップするのを助けるかもしれないと指摘しました。これまで考えていなかったが、それは理にかなっていることを認めなければならない。

+0

- 私100%shureではありませんが、これはトピックではなく、[SuperUser](http://superuser.com/)に属していると思います。 – makim

+3

サーバー設定の質問として、SuperUserの代わりにServerFaultをお勧めします。 –

+0

私はServerFaultおかげさまで、あなたの提案ごとにそのサイトについて知りませんでした。 –

答えて

1

IISを設定する方法が見つかりませんでしたが、asp.netジェネリックハンドラ(http://forums.asp.net/p/1478217/3453189.aspx、gvlahakisの答えにスクロールダウン)を使用して回避策を見つけました。 、上記ハンドラ、あなたが保護する必要があるフォルダごとに一つにしようと

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

第二には、ポイント・ディレクトリのブラウジングにweb.configファイルにタグを追加:

まず、404を返すジェネリックハンドラを作成しますhttpHandlersセクションとsystem.webServerセクションの両方にあります。以下のタグは、 "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 7対IIS 6で異なる動作を、私はこのようにサイトの画像が含まれていたフォルダを保護:6は、まだこのフォルダに含まれる画像を配信IIS Webページ(希望の動作、私はちょうどディレクトリ閲覧の試みをブロックしたい); IIS 7はそれらをブロックしました。

web.configの "location"タブを使用して、デフォルトのイメージハンドラを上書きしてイメージを表示できるようにする方法はおそらくありますが、私はウサギの穴から遠くへ行くことを望んでいません。

2

IIS(7以上)では、[リクエストフィルタ]に移動し、[隠しセグメント]というタブがあります。あなたはASP.Net MVCは、web.configファイルに次のハンドラを追加使用している場合、あなたはちょうどあなたが隠すことにしたいディレクトリの名前を追加することができ、それが今404

+1

私はこのアプローチを試して、それは動作します。しかし私の状況では、ディレクトリ内のファイルの要求ではなく、ディレクトリの参照の試みをブロックしたいだけでした。このアプローチは、ディレクトリ内のすべてをブロックするため、これでは機能しませんでした。 – witters

4

を返します

<system.webServer> 
    <handlers> 
    <add name="StopDirectoryBrowsing" path="*." resourceType="Directory" verb="*" 
     preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> 
    </handlers> 
<system.webServer> 
+0

このソリューションは、VS 2015 ASHX SPAソリューション(つまり、MVCソリューションではありません)では、コードを記述したりディレクトリ名をどこにでもリストする必要なく、私にとって役に立ちました。 – user2728841

関連する問題