web-dev-qa-db-ja.com

IIS7:web.configファイルでアクセスをブロックする方法

IIS7では、web.config xmlファイルを使用してディレクトリごとの構成を作成できることを知っています。 Webアクセス可能にしたくないいくつかの設定ファイルを含むディレクトリがあります。読み取りアクセスを禁止するローカルのweb.configファイルは良い解決策です。

ファイルへのWebアクセスを禁止するには、web.configファイルの内容は何ですか?

編集:これらの内容を含むweb.configファイルをファイルに入れようとしています:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
            <system.web>
                    <authorization>
                            <deny users="*" /> <!-- Denies all users -->
                    </authorization>
            </system.web>
</configuration>

しかし、ディレクトリ内のファイルに直接アクセスできます。どうしたの?何が起こっているのかをデバッグするにはどうすればよいですか?

14
neves

System.webを使用しています。 IIS7では、代わりにsystem.webServerを使用する必要があります。これにより、ASP.NETファイルだけでなく、すべてのタイプのファイルがブロックされます。たとえば、jpg、gif、txt、およびすべてのタイプのファイルをパスワードで保護できます。

次のようになります。

  <system.webServer>
      <security>
          <authorization>
              <remove users="*" roles="" verbs="" />
              <add accessType="Allow" roles="Administrators" />
          </authorization>
      </security>
  </system.webServer>

そして、あなたがそれを1つのファイルだけに設定したい場合:

 <location path="dontlook.jpg">
     <system.webServer>
         <security>
             <authorization>
                 <remove users="*" roles="" verbs="" />
                 <add accessType="Allow" roles="Administrators" />
             </authorization>
         </security>
     </system.webServer>
 </location>
12

これで問題を解決できると思います。
このweb.configをターゲットディレクトリを含むディレクトリに配置します:

<configuration>
 <system.webServer>
  <security>
   <requestFiltering>
    <hiddenSegments>
     <add segment="target directory name"/>
    </hiddenSegments>
   </requestFiltering>
  </security>
 </system.webServer>
</configuration>
5
Reza Roshan

Web.configの場所ノードを使用できます。 msdn の詳細な説明は次のとおりです。一言で言えば:

<location path="Subdirectory">
    <system.web>
        <authorization>
            <deny users="*"/> <!-- Denies all users -->
        </authorization>
    </system.web>
</location>
<location path="Public_Directory">
    <system.web>
        <authorization>
            <allow users="*"/> <!-- Allows all users -->
        </authorization>
    </system.web>
</location>

?も使用できます。匿名ユーザーが(許可/拒否)する必要があることを指定するワイルドカード

  • *は、ログインしているすべてのユーザーを意味します。
  • ?は匿名ユーザーを意味します。

?

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.web>
        <authorization>
            <deny users="?" /> 
        </authorization>
    </system.web>
</configuration>
0
Marooned