17

ローカル マシンで、mvc4 (razor) にサンプル プロジェクトを作成し、"x" という名前のディレクトリを作成し、その中にテキスト ファイル "a.txt" を配置しました。

http://localhost:64471/x/a.txt

私のWeb構成では、この構成によって「x」フォルダーへのアクセスをすべてのユーザーに拒否します:

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

ユーザーがこのリクエストを送信した場合:

http://localhost:64471/x/ 

それは機能し、web 構成のフォームタグで定義された URL にユーザーを返します。

しかし、ユーザーがこのリクエストを送信すると:

http://localhost:64471/x/a.txt

ブラウザでテキストファイルを読むことができます(ブラウザはテキストファイルの内容を表示します)。

「x」フォルダ内のすべてのファイルとサブフォルダへのアクセスをユーザーに拒否する方法を知りたいですか?

4

2 に答える 2

12

これは古い質問であることは承知していますが、問題があり、テキストまたは html ファイルを扱っている場合は、このスタックオーバーフローの質問を参照することをお勧めします。

つまり、これを web.config に追加する必要がある場合があります。

<system.webServer>
    <modules>
        <remove name="UrlAuthorization" />
        <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule"  />
    </modules>
</system.webServer>

カークが指摘するように、.txt や .html ファイルなどのファイルは ASP.NET ではなく IIS によって処理されるため、承認規則は適用されません。

于 2016-05-06T23:21:17.080 に答える
6

path="x"ルート web.config でテストしました。x フォルダーの下のすべてを制限します。~/x を参照することさえできません。ログインページにリダイレクトされます。

ルート web.config で、このように a.txt へのフル パスを試していただけますか?

<location path="x/a.txt">
  <system.web>
    <authorization>
      <deny users="*"/>
    </authorization>
  </system.web>
</location>

それでもうまくいかない場合は、次の内容で x フォルダー内に web.config を作成してみてください。

<?xml version="1.0"?>
<configuration>

  <location path="a.txt">
    <system.web>
      <authorization>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>

</configuration>
于 2013-09-26T20:00:30.020 に答える