2

IIS7で統合モードで実行されているサイトがあり、静的ファイルが認証されるようにweb.configを変更しました。修正したいのは、存在しないファイルのリクエストが届いた場合でも、.NET認証パイプラインを通過することです。Begin_Request()メソッドをデバッグすると、リクエストが/login.aspx?returnurl=filenotfoundに対して行われていることがわかります。 .js(ここで言い換えます)。

認証が開始される前に404をキャッチして返す方法に関するヒントはありますか?

ありがとう

4

2 に答える 2

4

私の主なアドバイスは次のとおりです。しないでください。

特定のリソースで認証が必要な場合は、おそらく何かを隠す必要があります。非表示にするものがある場合は、公開しているものに注意を払う必要があります。また、ファイルがあるリソースとそうでないリソースに対して異なる応答を行う場合は、何かを公開していることに注意する必要があります。

これは主要なセキュリティホールですか?言うことはできませんが、攻撃者に何かを明らかにするのに十分かもしれません。それは確かに攻撃対象領域の拡大なので、2つの選択肢があります。

  1. 入念な分析を行って、どのURIがファイルにマップされ、どのURIがファイルにマップされていないかに関する情報が攻撃者にとって有益ではないことを証明します。
  2. 認証されたユーザーに与えられるのは404だけですが、要求に認証を要求します。

後者の方が簡単で、エラーが発生しにくくなります。

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

于 2012-01-20T14:01:13.377 に答える
0

アプリケーションレベルで404を*.aspxページにマッピングできる可能性があります。したがって、存在しないリソースへのすべてのリクエストはページに再マップされ、querystringパラメーターは存在しないリソースの名前を示します。ページを承認エンジン(すべてのユーザーが利用可能)から除外できると仮定すると、さまざまなケースを処理する正確なロジックをページに配置できます。

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

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

于 2012-01-20T15:27:30.757 に答える