2012-01-17 10 views
2

私はIIS7で統合モードで実行しているサイトを持ち、静的ファイルが認証されるようにweb.configを変更しました。私が修正したいのは、既存のファイルが存在しないという要求が来ても、.NET認証パイプラインを通過するときです。Begin_Request()メソッドをデバッグして、/login.aspx?returnurl=filenotfound .js(ここでの言い換え)。静的ファイルに対する404要求に対する統合パイプライン認証の回避

認証が行われる前に誰かが404をキャッチして返す方法についてのヒントはありますか?

ありがとうございました

答えて

4

私の主な助言は次のとおりです。しないでください。

特定のリソースで認証が必要な場合は、おそらく何かを隠す可能性があります。あなたが隠すべきものがあるときは、あなたが明らかにしているものに注意を払うべきです。また、ファイルを持っているリソースに対して何か別の応答を与えているときは、何かを明らかにしていません。

これは大きなセキュリティホールですか?私は言うことはできませんが、攻撃者に何かを明らかにするだけで十分でしょう。確かに攻撃面が拡大しているので、2つの選択肢があります。

  1. どのURIがファイルにマップされているか、どのファイルにマップされていないかの情報が攻撃者にとって有益ではないことを証明するための徹底的な分析を行います。
  2. は、認証されたユーザが404

後者は簡単かつ少ない誤差傾向がある与えるにもかかわらず、すべての要求に対して認証を要求します。

つまり、統合モードのASP.NETで認証を行う方法はいくつかあります。あなたはAuthorizeRequestAuthenticateRequestのイベントを処理するモジュールでそれをやっていますか?そのようなケースが発生しているかどうか(URIが既存のファイルにマップされているかどうかを確認してください)をチェックし、そうであれば401を送信しないようにすることができます。

+0

私はこれをもう一度やっています - これを読む前の私の反応は同じになるでしょう。 404を見ることで、私は潜在的な攻撃から何かを排除しました。すべてがこのセクションからのauthenitcationを必要とするなら、セクションは存在に基づく個々のファイルではなく、 'ドア'でなければなりません。 – Bertie

+0

**セカンド:**本当にそうしないでください! – Ben

0

アプリケーションレベルで* .aspxページに404をマップできます。したがって、存在しないリソースへのすべてのリクエストはページに再マッピングされ、クエリ文字列のパラメータは存在しないリソースの名前を示します。ページを認可エンジンから除外することができると仮定すると、異なるケースを扱う正確なロジックをページに置くことができます。

<httpErrors errorMode="Custom"> 
     <remove statusCode="404" subStatusCode="-1"/> 
     <error statusCode="404" prefixLanguageFilePath="" path="/ErrorHandler.aspx" responseMode="ExecuteURL"/> 
    </httpErrors> 

これで、すべての404はErrorHandler.aspx?404;theurlofnonexistingresourceにルーティングされます。

関連する問題