Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment implémenter la fonctionnalité se souvenir de moi ?

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 :

  1. 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()).
  2. 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.
  3. Stocker 'l'identifiant du cookie' et le 'jeton' dans le cookie.

Étapes d'authentification :

  1. Si un cookie persistant est trouvé, vérifiez d'abord si l'enregistrement est disponible dans la base de données ou non.
  2. Si l'enregistrement est disponible, vérifiez si le cookie expire ou non.
  3. Si le cookie n'expire pas, validez l'identifiant du cookie par $cookie_id ==hash_hmac('sha512',$token_from_cookie,$salt_from_db).
  4. 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.
  5. 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.