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:
- 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()).
- 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.
- Almacenar 'id de cookie' y 'token' en la cookie.
Pasos de autenticación:
- Si se encuentra una cookie persistente, primero verifique si el registro está disponible en la base de datos o no.
- Si el registro está disponible, compruebe si la cookie caduca o no.
- Si la cookie no caduca, valide la identificación de la cookie mediante $cookie_id ==hash_hmac('sha512',$token_from_cookie,$salt_from_db).
- 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.
- 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.