IIS対ASP.NET認証-静的ファイルを保護する最も簡単な方法は?
-
06-07-2019 - |
質問
web.configに次のものがあるとします:
<allow roles="Developers" />
<deny users="*"/>
これにより、.aspx、.asmx、およびその他の.NETファイルタイプへのアクセスがロックされますが、権限のないユーザーがimage.jpgなどの静的ファイルを開くことは引き続き許可されます。誰かがimage.jpgを要求したときにweb.configが認証情報を要求されない理由を理解しています(.NETタイプではなく、IISはそれをバイパスできます)が、アプリケーション全体をロックダウンするにはどうすればよいですか?
オンラインで見つけたアドバイスには以下が含まれます:
-
問題のディレクトリの
-
<location>
エントリを作成すると、IIS / .NETがそれを取得します。 (そうではないようです。) - 独自のISAPIフィルターを作成し、すべての機密ファイルの拡張子をそれにマッピングする必要があります。
- 独自のISAPIフィルタを作成する必要はありません-拡張機能をaspnet_isapi.dllにマッピングするだけでできます。
- IISを編集する必要はありません。拡張機能のweb.configにhttpHandlerエントリを作成するだけです。 (アプリケーション内のすべての拡張機能に対してこれを実行しようとはしません。)
これは、Apacheで覚えているほど簡単には機能しません。訪問者にパスワードを要求し、それを持たないユーザーにファイルを(静的または静的に)提供しないようにするために機能する最も簡単なことは何ですか?
解決
IIS 6のワイルドカードマッピング。これにより、すべてのファイルがASP.NETパイプラインを介して送信され、すべてのファイルに対してフォーム認証が行われることが保証されます。パフォーマンスが低下します(どれだけ)。
IIS 5の場合は、IIS 6にアップグレードします。
4つのアイデアをリストします:
-
場所は、ワイルドカードマッピング(または特定の拡張子がマッピングされている)の場合にのみ機能します。
-
isapiフィルターを作成したいのは誰ですか? IIS7がなければ、マネージランゲージで簡単に行うことはできません。そして、C ++ isapiフィルターを作成したいのは誰ですか?
-
ワイルドカードマッピングは上記の警告(パフォーマンス)で機能します
-
繰り返しますが、最後のオプションは、IISに特定の拡張機能を登録し、aspnetを介してルーティングしなければ機能しません。
他のヒント
素敵な簡単な方法はIIS 7にアップグレードすることです。IIS7には統合されたパイプラインがあります。