はじめに
「Remember Me」機能を実装すると、ユーザーはブラウザを閉じた後もログイン状態を維持します。この機能により、ユーザーの利便性が向上し、全体的なユーザー エクスペリエンスが向上します。この記事では、永続的なログイン メカニズムのためにユーザーのブラウザに Cookie を保存および検証する安全な方法について詳しく説明します。
Cookie を安全に保存する
安全にするにはCookie を保存するには、データベース内の別のテーブルを使用します。
CREATE TABLE `auth_tokens` ( `id` integer(11) not null UNSIGNED AUTO_INCREMENT, `selector` char(12), `token` char(64), `userid` integer(11) not null UNSIGNED, `expires` datetime, PRIMARY KEY (`id`) );
ログイン後のプロセス
「記憶する」オプションを有効にしてログインに成功すると、次のようになります。
Cookie に次の値を設定します:
'remember': $selector.':'.base64_encode($authenticator)
ページ読み込み時の再認証
ユーザーを再認証するには:
if (empty($_SESSION['userid']) && !empty($_COOKIE['remember'])) { list($selector, $authenticator) = explode(':', $_COOKIE['remember']); $row = $database->selectRow( "SELECT * FROM auth_tokens WHERE selector = ?", [ $selector ] ); if (hash_equals($row['token'], hash('sha256', base64_decode($authenticator)))) { $_SESSION['userid'] = $row['userid']; // Regenerate login token and update database } }
アプローチの詳細
以上がPHP と Cookie を使用して安全な「Remember Me」機能を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。