1

ログインしたユーザーに簡単な記憶を実装したいので、ブラウザを閉じた後もログインしたままになります。そこで、UUID.randomUUID によって生成された一意のキーを保持する Cookie を作成し、サーバー側でそれをユーザー名にマップすることを考えていました。

それは十分に安全ですか?リスクは何ですか?ハッカーがランダムなキーを試すのを防ぐために予防措置を講じる必要がありますか?

spring security や apache shiro のような認証フレームワークを使用することを考えていましたが、それらがもたらす利点が見つかりませんでした (複雑なアクセス制御は必要なく、ユーザー登録/ログインだけで済みます)。セキュリティに関して重要な何かが欠けていますか?

アップデート

私の質問は実際には次のようなものだと思います: spring や shiro のようなフレームワークは、おそらく一致しないセキュリティを生成する機能を記憶するために、かなり洗練された何かを行いますか?

4

2 に答える 2

1

Spring セキュリティは、宣言型セキュリティを提供します。アプリケーションにSpring Frameworkを使用していると仮定します。一般に、Spring セキュリティと Spring フレームワークは、必要な瞬間まで気付かない柔軟性を提供します。予期せぬカスタマイズが必要だったSpringに感謝する場面もありました。

Spring セキュリティを使用すると、DB ベース、LDAP ベースなどの認証モデルを簡単にプラグインできます。使用する場合はデフォルトのログイン ページを提供し、アクセスした URL に基づいてログイン ページへのリダイレクトを提供し、ユーザーが一度 URL に移動できるようにします。認証が完了し、さらに多くのことが行われるため、定型コードの記述量が削減されます。また、Remember Me の実装も提供します。http://static.springsource.org/spring-security/site/docs/3.0.x/reference/remember-me.html . ただし、セキュリティへの影響を詳細に検討する必要があります。

Spring セキュリティ自体は、remember me のより良い実装を提供しません。しかし、それが提供する他の利点については考慮できると思います。

于 2013-04-16T20:28:25.037 に答える
0

「私を記憶する機能はどのように機能しますか?」の答えから始めましょう。spring-security と shiro の両方に、同様の「remember me」サービスの実装があります。暗号化されたサブジェクトを Cookie に保存し、この Cookie からユーザーを認証します。これは、サーバーがヘッダーを使用してクライアントに応答を送信しSet-Cookie:<character sequence>、次にクライアントがヘッダーを使用して要求を送信することを意味しますCookie:<character sequence>

次に、誰かのアカウントにサインインしたいとします。

  1. 被害者のコンピュータをそのまま使えます。(ユーザーがremember meサービスで認証されている場合は、機密性の高い操作を実行しないでください)。これは、セッションが終了していない (ブラウザが開いている) ときに被害者が昼食に出かけたときのユーザー名とパスワードの認証にも適用できます。
  2. http トラフィックを分析して Cookie ヘッダーを取得し、このヘッダーを使用してサインインできます。(したがって、https を使用してトラフィック分析を防ぐことができます)。これは、ユーザー名パスワード認証にも適用できます。
  3. ランダム キーを試すことができます (複雑なサブジェクト エンコーディング アルゴリズムと組み合わせてブルート フォース フィルターを使用できます)。これは、ユーザー名パスワード認証にも適用できます。

結論:ユーザーがremember meサービスで認証されている場合は、機密性の高い操作を実行しないでください。必要に応じて https を使用してください。総当たり防御を使用します。暗号化について考えてみましょう。

于 2013-04-17T12:40:25.423 に答える