Soy un desarrollador web de PHP que recientemente ha estado leyendo sobre seguridad y, por lo tanto, esta pregunta entró en mi mente: ¿Cómo autenticar de forma correcta y segura a los usuarios que ya han iniciado sesión con un token? He visto la técnica mencionada en varios lugares, pero no he encontrado ninguna demostración de ello.
Yo mismo implementé una versión que funciona así:
- El usuario inicia sesión con su nombre de usuario y contraseña. (Se almacena utilizando un hash pbkdf2 de 1024 bits)
- Se genera un token aleatorio y luego MD5 utilizando el siguiente código PHP:
uniqid(mt_rand(), true)
- Esta información se almacena en la base de datos, una sesión de PHP y una cookie.
- Cuando el usuario accede a una página, se llama a una función que verifica si el token en la sesión o la cookie coincide con el token almacenado en la base de datos. Si lo hace, el usuario permanece conectado, si no, el usuario se desconecta.
- Cada vez que se envía una solicitud al servidor, se llama a esta función y se repiten los pasos 2 y 3.