Web.config を使用してサブディレクトリへのアクセスをブロックする

Web.config を使用してサブディレクトリへのアクセスをブロックする

ASP.NET プロジェクトに、ユーティリティ ファイルを含むサブディレクトリがあります。これらは実行時にコードで必要になりますが、Web 上では表示したくありません。

単一のサブディレクトリとそのすべてのコンテンツへのすべてのユーザーによるアクセスをブロックするための Web.config ファイルの構文は何ですか?

答え1

IIS 7 には新しい「要求フィルタリング」機能があります。おそらく、非表示セグメント構成を使用することをお勧めします。

<configuration>
 <system.webServer>
  <security>
   <requestFiltering>
    <hiddenSegments>
     <add segment="BIN"/>
    </hiddenSegments>
   </requestFiltering>
  </security>
 </system.webServer>
</configuration>

これは〜をひき起こすhttp://yoursite/bin提供できない(しかしhttp://yoursite/binaryまだ動作します)

チェックアウト: http://learn.iis.net/page.aspx/143/リクエストフィルタリングの使用方法

答え2

問題は、IIS が単にファイルを返すだけでは、ASP.Net が干渉する機会がまったくないということです。フォーム ベース認証を有効にして、かなりいじくり回せば実現できると思いますが、私は単純にファイルを wwwroot フォルダーの外に移動するだけです。

JR

答え3

これは動作するはずです:

<configuration>
  <location path="FolderName">
    <system.web>
      <authorization>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>
</configuration>

答え4

これは古い質問ですが、Web サーバー パス内の任意のディレクトリに簡単にドロップインできますweb.config。すべてのユーザー ロールを削除し、デフォルトのアクセスを拒否に設定します。シンプルで、構成は必要ありません。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <security>
            <authorization>
                <remove users="*" roles="" verbs="" />
                <add accessType="Deny" users="*" />
            </authorization>
        </security>
    </system.webServer>
</configuration>

関連情報