Dire que le nom de la table de base de données pour le cookie persistant est pcookies avec les colonnes suivantes :
- identifiant_cookie (CHAR)
- identifiant_utilisateur (INT)
- expiration (DATETIME)
- sel (CHAR)
Étapes de création des cookies :
- Après une connexion réussie, créez un enregistrement de cookie dans la base de données sous un identifiant unique. Vous pouvez le générer par hash_hmac('sha512', $token, $salt) où $token=uniqid($user_id, TRUE) et $salt=md5(mt_rand()).
- Stocker 'l'identifiant de l'utilisateur', le 'délai d'expiration' et le 'salt' avec l''identifiant du cookie' dans la base de données.
- Stocker 'l'identifiant du cookie' et le 'jeton' dans le cookie.
Étapes d'authentification :
- Si un cookie persistant est trouvé, vérifiez d'abord si l'enregistrement est disponible dans la base de données ou non.
- Si l'enregistrement est disponible, vérifiez si le cookie expire ou non.
- Si le cookie n'expire pas, validez l'identifiant du cookie par $cookie_id ==hash_hmac('sha512',$token_from_cookie,$salt_from_db).
- Une fois le cookie validé, supprimez-le de la base de données et créez un nouveau cookie en suivant les étapes de création de cookies ci-dessus.
- Si le cookie s'avère invalide, effacez-le de l'appareil et supprimez tous les autres enregistrements de cookies de l'utilisateur de la base de données, notez l'utilisation d'une tentative de vol et passez au processus de connexion manuelle.
Remarques :
- Lorsque la session est disponible, ignorez la vérification des cookies.
- Après la déconnexion, effacez le cookie ainsi que l'enregistrement de la base de données.
- N'autorisez jamais les utilisateurs à exécuter des demandes sensibles telles que le changement de mot de passe ou l'affichage des informations de carte de crédit à partir d'un cookie de connexion persistant. Appelez le mot de passe pour vous connecter et ajoutez un indicateur dans la session pour autoriser toutes les opérations ultérieures.