-1

私の質問は、「正しい」エラー コードを返すか、プライバシーを保護しますか? 、しかし、いくつかの異なる答えを聞きたいです。

ログインしていないユーザーがほとんどのページにアクセスできる WEB サイトがあります。ただし、ログインしていないユーザーが承認を必要とするリソース (ページ) にアクセスしようとすると (ユーザーは FooRole ロールを持っている必要があります)、自動的にログイン ページにリダイレクトし、正しい資格情報を提供した後、制限されたリソースに戻ります。ユーザーが正しいクレデンシャルを提供したが、たまたまアクセス権が不十分だった場合 (BarRole は持っているが FooRole を持っていない)、Web サイトはどうすればよいでしょうか?

現在の実装では、HTTP 403 応答を返します (禁止されています)。しかし、一部の開発者は、404 コードの方がセキュリティが向上するため、返さなければならないと主張しています。ユーザーは、存在しないリソースとアクセスできないリソースを区別すべきではありません。セキュリティの観点からは 404 を返すほうがよいかもしれませんが、説明されている状況では、ユーザーはログイン ページにリダイレクトされ、その動作はそのようなページが存在することを「示唆」するため、論理的には 404 を返しません (私の考えです)。ユーザーがすでに承認されており、制限されたリソースにアクセスしようとする (URL を直接変更する) 場合、論理的には 404 エラーが返される可能性があります。

たぶん、そのような「ログインへの自動リダイレクト」機能は良くないですか?そのような状況で、より「標準/良い/ユーザーフレンドリー/ハックフリー」の動作はどれですか?

ありがとう!

4

1 に答える 1

1

ログインの失敗に対して正確な 403 エラー コードを返す方が適していると思います。

一般的にどのファイルが実際に存在するかを隠すという問題については、「あいまいさによるセキュリティ」(流行語) は非常に貧弱なセキュリティ モデルと見なされており、ユーザーがそれらの URL にアクセスできない場合、これらの URL を知ることは実際には何のメリットもありません。とにかく(そして、彼らがアクセス制御を破った場合、ファイルへのURLを見つけるかなり簡単な方法があると思います)。

ただし、ファイル名を難読化することが重要な場合は、認証されていないユーザーの場合、フォルダー内のファイル (存在するかどうかに関係なく) に対して 403 を返すことをお勧めします (基本的に、フォルダー内の内容を確認するためのアクセスを拒否しているため、エラー コードは正当なようです)私に)。ログインしているかどうかを判断する CustomErrors ハンドラーを介してこれを行うことをお勧めします (そうすれば、認証された人に対して正確な 404 エラーを維持できます) または例外をキャッチする HttpModule 404 がスローされ、認証されたユーザーと認証されていないユーザーで異なる結果が表示されます。

于 2009-11-21T05:44:43.030 に答える