1. ホーム
  2. security

[解決済み] Webサイトに "remember me "を実装するのに最適な方法は何ですか?[クローズド]

2022-03-18 08:36:22

質問

私のウェブサイトに、ユーザーがクリックできるチェックボックスを設け、ウェブサイトを訪れるたびにログインする必要がないようにしたいのです。これを実装するために、ユーザーのコンピュータにクッキーを保存する必要があることは分かっていますが、そのクッキーには何が含まれていなければなりませんか?

また、このクッキーがセキュリティ上の脆弱性をもたらさないようにするために気をつけるべき一般的な間違いがあれば、それは「私を覚えていて」機能を与えつつも避けることができるでしょうか?

解決方法は?

永続的なログインクッキーのベストプラクティスの改善

次のような戦略もあります。 ベストプラクティスはこちら (2006年)または アップデートされた戦略はこちら (2015):

  1. Remember Meにチェックを入れた状態でユーザーがログインに成功すると ログインクッキーが発行されます。 標準のセッション管理クッキーに加え
  2. ログインクッキーの内容は シリーズ識別子とトークン . シリーズとトークンは 推測不能な乱数 を適当な広さの空間から抽出する。両者は一緒にデータベースのテーブルに格納される。 トークンはハッシュ化される (sha256でよい)。
  3. 非ログインユーザーがサイトを訪問し、ログインクッキーを提示すると、シリーズ識別子は データベースで検索する .
    1. もし シリーズ識別子 が存在し、そのハッシュが トークン がそのシリーズ識別子のハッシュと一致する場合、そのユーザは 認証済み . A 新しいトークン が生成され、トークンの新しいハッシュが古いレコードの上に保存され、新しいログインクッキーがユーザーに発行されます。 シリーズ識別子 ).
    2. シリーズが存在するがトークンが一致しない場合は 盗難 が想定されます。ユーザーは強い言葉で警告を受け、そのユーザーの記憶しているセッションはすべて削除されます。
    3. ユーザー名とシリーズが存在しない場合、ログインクッキーは 無視 .

この方法は、深層防護を実現するものです。もし誰かがデータベース・テーブルの漏洩に成功しても、攻撃者にユーザーになりすますためのオープン・ドアを与えることはありません。