私はここで説明するシステム使用して「私を覚えて」ユーティリティを実装しようとしています:Improved persistent login cookieの実装は、複数のデバイス間でトークンとシリーズで私を覚えて
は、しかし、ここで私のためのロジックに問題があるとしている場合思っていました誰も私のためにこれをクリアすることができます。
ユーザにセッションIDが与えられます。これはランダムに生成された文字列であり、ユーザーのアカウントの存続期間にわたって永続的なものです。 です。
ユーザーにはトークンIDが与えられます。これは、ユーザーが正常にログインするたびに再作成され、ランダムに生成された文字列と です。
これらの値の両方がユーザーのマシン上で、データベース内の署名クッキーとして保存されます。
アイデアは、誰かがユーザーのトークンとシリーズを偽装し、ユーザーとしてログインすると、新しいトークンIDを生成するという考え方です。正当なユーザーが次にログインしようとすると、一致するシリーズがありますが、無効なトークンがあり、システムにセキュリティ違反が発生したことを通知し、必要なアクションをとることができます(ユーザーのトークンをクリアします)。
これは素晴らしいです。しかし、ユーザーが複数のデバイスやブラウザからアプリケーションを使用しようとするとどうなりますか?ユーザーがChromeでサービスにログインし、私のことを覚えているとします。次回はFirefox経由でログインし、私も覚えています。新しいトークンが生成され、次回ユーザーがChromeでログインしようとすると誤った盗難が発生するようになります - いいえ?
この場合、どうすればこのソリューションをより確実に実装できますか?私は、Cookieに基づく認可は、その性質上安全性が低く、Cookieを許可されたユーザーが購入などの有害な行為を実行できないことを十分に認識しています。
ありがとうございました。私はたくさんのトークンを持っていて、それらに非使用時の30日間の有効期限を与えるので、私は冗長なデータでデータベースを満たしません。 –