sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo implementar la función de recordarme?

Diga que el nombre de la tabla de la base de datos para la cookie persistente es pcookies con las siguientes columnas:

  • id_cookie (CHAR)
  • id_usuario (INT)
  • caducidad (DATETIME)
  • sal (CHAR)

Pasos para la creación de cookies:

  1. Después de iniciar sesión correctamente, cree un registro de cookies en la base de datos con una identificación única. Puede generarlo mediante hash_hmac('sha512', $token, $salt) donde $token=uniqid($user_id, TRUE) y $salt=md5(mt_rand()).
  2. Almacene la 'identificación de usuario', el 'tiempo de caducidad' y la 'sal' junto con la 'identificación de la cookie' en la base de datos.
  3. Almacenar 'id de cookie' y 'token' en la cookie.

Pasos de autenticación:

  1. Si se encuentra una cookie persistente, primero verifique si el registro está disponible en la base de datos o no.
  2. Si el registro está disponible, compruebe si la cookie caduca o no.
  3. Si la cookie no caduca, valide la identificación de la cookie mediante $cookie_id ==hash_hmac('sha512',$token_from_cookie,$salt_from_db).
  4. Una vez que se valide la cookie, elimínela de la base de datos y cree una nueva cookie de acuerdo con los pasos de creación de cookies anteriores.
  5. Si se encuentra que la cookie no es válida, borre la cookie del dispositivo y elimine todos los demás registros de cookies del usuario de la base de datos, observe el uso sobre un intento de robo y continúe con el proceso de inicio de sesión manual.

Notas:

  • Cuando la sesión esté disponible, ignore la verificación de cookies.
  • Después de cerrar sesión, borre la cookie junto con el registro de la base de datos.
  • Nunca permita que los usuarios ejecuten solicitudes confidenciales como cambio de contraseña o ver información de tarjetas de crédito desde un inicio de sesión persistente de cookies. Invoque la contraseña para iniciar sesión y agregue una bandera en la sesión para permitir todas las operaciones posteriores.