web-dev-qa-db-ja.com

安全な「Rememberme」の実装方法

自分が取り組んでいるアプリに「Rememberme」を実装する方法を見つけようとしています。現在、私の実装は次のようになっています。

  1. ユーザーがサインインし、記憶を要求する
  2. サーバーは電子メール/パスワードでユーザーを検証します
  3. 検証が成功した場合、ユーザーの電子メールとサーバーに保存されている秘密鍵を使用してJSONWebトークンを生成します。
  4. その後、トークンはCookieとしてクライアントに返送されます。しかし同時に、トークンはbcryptを使用してハッシュされ、データベース内のユーザーの情報に保存されます。
  5. これで、ユーザーが後でページにアクセスしたときに、ページが読み込まれ、データベースに保存されているハッシュに対して検証されるときに、Cookieがサーバーに送信されます。

トークンは基本的にユーザーのパスワードになり、サーバー側でそれに応じて処理されるため、私にはこれは安全であるように見えます。ただし、これが実際に安全であるかどうか、または不足しているものがあるかどうかはわかりません。

4
Matt Gilene

Cookieの代わりに、HTML5 Web Storage API を使用できます。それははるかに安全であり、すべての最新のブラウザ(IE8 +)でサポートされています。

LocalStorage は、Web StorageAPIの優れたインターフェイスです。これは、(ユーザーがクリアするまで)有効期限のないクライアント永続ストレージの形式であるか、開発者がJavaScriptから実行します。

この答えをさらに調べることができます CookieとLocalStorageの違い

1
Minato