永続的なCookieのデータベーステーブルの名前がpcookiesであるとします。 次の列があります:
- cookie_id(CHAR)
- user_id(INT)
- 有効期限(DATETIME)
- 塩(CHAR)
Cookieの作成手順:
- ログインに成功したら、データベースに一意のIDでCookieレコードを作成します。これは、hash_hmac('sha512'、$ token、$ salt)によって生成できます。ここで、$ token =uniqid($ user_id、TRUE)および$ salt =md5(mt_rand())です。
- 「ユーザーID」、「有効期限」、「ソルト」を「CookieID」とともにデータベースに保存します。
- 「cookieid」と「token」をcookieに保存します。
認証手順:
- 永続的なCookieが見つかった場合は、最初にレコードがデータベースで利用可能かどうかを確認してください。
- レコードが利用可能な場合は、Cookieの有効期限が切れているかどうかを確認してください。
- Cookieの有効期限が切れていない場合は、CookieIDを$cookie_id ==hash_hmac('sha512'、$ token_from_cookie、$ salt_from_db)で検証します。
- Cookieが検証されたら、データベースからCookieを削除し、上記のCookie作成手順に従って新しいCookieを作成します。
- Cookieが無効であることが判明した場合は、デバイスからCookieをクリアし、データベースからユーザーの他のすべてのCookieレコードを削除し、盗難の試みに関する使用に注意して、手動ログインプロセスに進みます。
注:
- セッションが利用可能な場合は、Cookieの確認を無視してください。
- ログアウト後、データベースレコードとともにCookieをクリアします。
- ユーザーがパスワードの変更などの機密性の高いリクエストを実行したり、永続的なCookieログインからクレジットカード情報を表示したりすることを許可しないでください。パスワードを呼び出してログインし、セッションにフラグを追加して、以降のすべての操作を許可します。