7

ここで概説されているシステムを使用して、「remember me」ユーティリティを実装しようとしています:永続的なログイン Cookie の改善

ただし、ここのロジックには問題があり、誰かがこれを解決できるかどうか疑問に思っていました。

  • ユーザーにはセッション ID が与えられます。これはランダムに生成された文字列であり、ユーザーのアカウントの存続期間中持続します。

  • ユーザーにはトークン ID が与えられます。これはランダムに生成された文字列で、ユーザーが正常にログインするたびに再作成されます。

これらの値は両方とも、署名付き Cookie としてユーザーのマシンとデータベースに保存されます。

アイデアは、誰かがユーザーのトークンとシリーズを偽装し、ユーザーとしてログインした場合、新しいトークン ID を生成するというものです。次に正当なユーザーがログインを試みると、一連の文字列は一致しますがトークンが無効になるため、セキュリティ違反が発生したことをシステムに通知し、必要なアクションを実行できます (ユーザーのトークンを消去します)。

これは素晴らしい。しかし、ユーザーが複数のデバイスまたはブラウザーからアプリケーションを使用しようとするとどうなりますか? ユーザーが Chrome を使用して私のサービスにログインし、Remember Me をチェックするとします。次回は Firefox 経由でログインし、[remember me] も選択します。新しいトークンが生成されるため、ユーザーが次に Chrome でログインしようとすると、偽の盗難がトリガーされます。いいえ?

この場合、このソリューションをより確実に実装するにはどうすればよいですか? 私は、Cookie ベースの承認は本質的に安全性が低く、Cookie を承認されたユーザーが購入などの損害を与える行為を行うことを許可しないことを十分に承知しています。

4

1 に答える 1