ユーザーが自分の Web サイトにログインするときに、「ログイン状態を維持する」機能を使用できるようにしたいと考えています。この投稿のトップの回答である"Keep Me Logged In" - the best approachの提案で、ユーザーのソルトとパスワードの組み合わせを 1 つの Cookie にハッシュし、ユーザーの ID (数値) を別の Cookie に保存することにしました。もちろん、ハッシュ値はデータベースサーバー側にも保存され、ユーザーが再び戻ったときに検証されます。私が使用したソルト値は、ユーザーが最初に登録したときにユーザーのパスワードをハッシュするために使用したものと同じであるため、静的であり、セッション間で変化しません。このアプローチにはいくつかの問題があります。
1)登録ソルトが静的である場合、またはCookieに対して毎回異なるソルトを生成する必要がある場合、登録ソルトを使用することは良い考えですか?
2) 誰かが Cookie にアクセスして別のコンピューターにコピーし、そのコンピューターから Web サイトにアクセスしようとすると、理論的には、そのユーザーのアカウントに自動的にログインしますが、これはセキュリティ上の問題ではありませんか?
3) 悪意のあるユーザーがデータベースへのアクセスを取得するシナリオでは、安全な Web サイトはソルト化およびハッシュ化されたパスワードを使用しているため、ハッカーが複数のアカウントにアクセスすることは (仮にあったとしても) 困難になります。しかし、ハッシュ値とソルト値をいじって、データベースで変更した値と一致する Cookie を作成するだけで、必要なアカウントに効果的にアクセスでき、パスワードハッシュプロセス全体が役に立たなくなります。したがって、私が現在使用しているこの Cookie アプローチは、データベース全体とすべてのユーザーのアカウントを危険にさらしています。
私の質問は、前述の問題を心配することなく、ユーザーのパスワードのハッシュなどの機密情報を含む Cookie を PHP に保存するにはどうすればよいですか? この「ログイン状態を維持する」機能を提供する Gmail や Hotmail などの Web サイトは、私が現在行っている方法よりも安全なアプローチに従っているに違いありません。