0

Web アプリに単一のサーブレットがあり、すべてのユーザーが何かを行う前にログインする必要があるとします。したがって、メソッドgetpostメソッドには、ifリクエストを処理するためにセッション属性を抽出してユーザーがログインしているかどうかをテストし、elseログインしていない場合はログイン ページにリダイレクトするブロックがあります。

このシナリオを考えると、侵入者がパスワードを知らなくてもシステムを操作して侵入できる方法はありますか? パスワードがサーブレットにハードコーディングされているとします。はいの場合、彼はどこから始めますか?

4

2 に答える 2

0

セキュリティの鍵はあなたのコメントの周りにありますextract a session attribute- どのようにこれを行っていますか? 彼らはあなたにクエリ文字列パラメーターを送信していますか? メソッドヘッダーで認証情報を送信していますか?

@Hogan のポイントでは、これが HTTPS 経由でない限り、答えは次のとおりです。悪意のある要求」。

通信が HTTPS 経由で行われている場合は、問題ありません。単一のハードコードされたパスワードを使用することは問題ありませんが、パスワードが侵害された場合を考えてみてください。現在、すべてのクライアント/ユーザー/など。コードを変更する必要があります。

より良い設計は、クライアントがリクエストと共に送信できるキーを発行して、それを使用してクライアントが誰であるかを識別し、キーが侵害された場合は、そのユーザー/クライアント/などに新しいキーを再発行することです。

これは、トラフィックが HTTPS 経由であることを前提としています

トラフィックがそうでない場合、これの多くは故障しており、HMAC などを調べる必要があります。安全な API の設計についてこの記事を書きました。この記事は、この悪夢のようなセキュリティがどのように機能するかについての良い入門書となるはずです。

あなたの目が頭の後ろに転がっていて、「なんてこった、私はイエス/ノーが欲しかった」と考えているなら、私の推奨事項は次のとおりです。

  1. すべてのトラフィックが HTTPS 経由であることを要求する
  2. 各クライアントに個別のパスワードを発行して、1 つが侵害された場合でも、すべてのパスワードが侵害されないようにします。
  3. これで、かなり先に進むことができます。

その助けを願っています。このトピックは非常に難解で、歴史のレッスンを望んでおらず、この問題を解決して先に進みたいだけであることはわかっています。私があなたにそれをするのに十分なものを与えたことを願っています.

于 2013-03-30T23:23:35.137 に答える