これは別の質問のブランチです: What is the best way to implement "remember me" for a website?ログインしたままにするベストプラクティス:Cookieのユーザー名はどのようにしてより安全になりますか?
トップの答えはこれを実装することです: http://jaspan.com/improved_persistent_login_cookie_best_practice
要約:
シリーズトークンとして乱数を使用し、別のログイントークンとして使用します。 ログインしたままの状態のCookieに、ユーザー名とともにそれらを配置します。 2番目の通常のセッションCookieを割り当てます。ユーザがセッションクッキーなしで に到着するたびに、ログインしたままのクッキーを消費します。新しく を発行してください。今度は新しいランダムログイントークンを使用して、シリーズ トークンを同じにしておきます。
なぜユーザー名が含まれますか?それはどのように役立っていますか?シリーズトークンは、ユーザーとシリーズを識別するのに十分なものでなければなりません。このアプローチでは、攻撃者がすべてのユーザー名を推測して一度にサイトにヒットし、全員をログアウトさせるDoS攻撃を防ぐために、この方法でシリーズトークンが追加されました。しかし、なぜユーザー名をまったく残すのが理にかなっていますか?
ユーザー名を含むAFAICTは2つのことを行います。まず、ランダムなシリーズトークンを送信することで、DoSに記憶されたログインが難しくなります。 (DoSは有効なシリーズトークンとペアリングされたユーザ名を推測する場合にのみ成功します)。第2に、ユーザ名は、異なるユーザに発行されるシリーズトークン間の無差別な衝突を防ぎます。ユーザ名がなければ、シリーズトークンの衝突は盗難のように見えます。もちろん、すべての新しいシリーズトークンが以前に発行されたすべてのシリーズトークンの中でユニークであることを保証できれば、これは問題ではありません。 – ottomeister
これはこれまでのところ最大の意味を持っています。シリーズトークンの一意性を確認することができない非常に分散したシステムでは、なぜユーザー名か、私が望むのは、ユーザー名のハッシュを含めることができます。しかし、シリーズトークンがユニークであれば、ユーザー名を潜在的な攻撃者から奪うこともできます。 –
整数と文字列検索のパフォーマンスのために、ユーザー名の代わりにユーザーIDを使用する方が良いですか? – axelbrz