Angenommen, der Name der Datenbanktabelle für dauerhafte Cookies ist pcookies mit den folgenden Spalten:
- cookie_id (CHAR)
- user_id (INT)
- Ablauf (DATETIME)
- Salz (CHAR)
Schritte zur Cookie-Erstellung:
- Erstellen Sie nach erfolgreicher Anmeldung einen Cookie-Datensatz in der Datenbank unter einer eindeutigen ID. Sie können es mit hash_hmac('sha512', $token, $salt) generieren, wobei $token=uniqid($user_id, TRUE) und $salt=md5(mt_rand()).
- Speichern Sie „Benutzer-ID“, „Ablaufzeit“ und „Salz“ zusammen mit der „Cookie-ID“ in der Datenbank.
- Speichern Sie „Cookie-ID“ und „Token“ im Cookie.
Authentifizierungsschritte:
- Wenn ein dauerhaftes Cookie gefunden wird, überprüfen Sie zuerst, ob der Datensatz in der Datenbank verfügbar ist oder nicht.
- Wenn der Datensatz verfügbar ist, prüfen Sie, ob das Cookie abläuft oder nicht.
- Wenn das Cookie nicht abläuft, validieren Sie die Cookie-ID mit $cookie_id ==hash_hmac('sha512',$token_from_cookie,$salt_from_db).
- Sobald das Cookie validiert ist, löschen Sie es aus der Datenbank und erstellen Sie ein neues Cookie gemäß den obigen Schritten zur Cookie-Erstellung.
- Wenn das Cookie als ungültig befunden wird, löschen Sie das Cookie vom Gerät und löschen Sie alle anderen Cookie-Datensätze des Benutzers aus der Datenbank, melden Sie die Verwendung über einen Diebstahlversuch und fahren Sie mit dem manuellen Anmeldevorgang fort.
Hinweise:
- Ignorieren Sie das Überprüfungs-Cookie, wenn eine Sitzung verfügbar ist.
- Löschen Sie nach dem Abmelden das Cookie zusammen mit dem Datenbankeintrag.
- Gestatten Sie Benutzern niemals, vertrauliche Anfragen wie Passwortänderungen auszuführen oder Kreditkarteninformationen von einer permanenten Cookie-Anmeldung aus anzuzeigen. Rufen Sie das Passwort auf, um sich anzumelden, und fügen Sie ein Flag in der Sitzung hinzu, um alle weiteren Operationen zuzulassen.