Web サイトにアクセスするたびにログインする必要がないように、ユーザーがクリックできるチェックボックスを Web サイトに追加したいと考えています。これを実装するには、コンピューターに Cookie を保存する必要があることはわかっていますが、その Cookie には何が含まれている必要がありますか?
また、この Cookie がセキュリティの脆弱性を示さないようにするために注意すべきよくある間違いはありますか?
Web サイトにアクセスするたびにログインする必要がないように、ユーザーがクリックできるチェックボックスを Web サイトに追加したいと考えています。これを実装するには、コンピューターに Cookie を保存する必要があることはわかっていますが、その Cookie には何が含まれている必要がありますか?
また、この Cookie がセキュリティの脆弱性を示さないようにするために注意すべきよくある間違いはありますか?
ここで説明されているこの戦略をベスト プラクティス(2006 年)として使用することも、ここで説明されている更新された戦略(2015 年)を使用することもできます。
このアプローチは、多層防御を提供します。誰かがデータベース テーブルを漏えいしたとしても、攻撃者がユーザーになりすますための扉を開くことはできません。
UserId と RememberMeToken を保存します。彼らがログインしてログインすると、チェックがオンになり、新しいRememberMeTokenが生成されます(これにより、マークされた他のマシンが無効になり、「私を覚えている」とマークされます)。
ユーザーが戻ってきたら、remember me トークンで検索し、UserId が一致していることを確認します。
ユーザー ID とトークンを保存します。ユーザーがサイトに戻ってきたら、これら 2 つの情報をデータベース エントリなどの永続的なものと比較します。
セキュリティに関しては、誰かが Cookie を変更して追加の利益を得ることができるようなものをそこに置かないでください。たとえば、ユーザー グループやパスワードを保存しないでください。セキュリティを回避するような変更が可能なものは、Cookie に保存しないでください。
永続的なセッションを自分で調べたところ、セキュリティリスクに見合うだけの価値はないことがわかりました。どうしても必要な場合に使用しますが、そのようなセッションは弱く認証されていると見なし、攻撃者にとって価値のあるものに対しては新しいログインを強制する必要があります。
もちろん、その理由は、永続セッションを含むCookieが非常に簡単に盗まれるからです。
あなたのクッキーを盗む4つの方法(彼の答えに基づいたページのイェンス・ローランドによるコメントから):@splattne