¿Cuál es la mejor manera de implementar "recordarme" para un sitio web? [cerrado]

Resuelto Vort3x asked hace 16 años • 4 respuestas

Quiero que mi sitio web tenga una casilla de verificación en la que los usuarios puedan hacer clic para no tener que iniciar sesión cada vez que visiten mi sitio web. Sé que tendré que almacenar una cookie en su computadora para implementar esto, pero ¿qué debería contener esa cookie?

Además, ¿existen errores comunes a tener en cuenta para evitar que esta cookie presente una vulnerabilidad de seguridad, que podría evitarse manteniendo la funcionalidad "recordarme"?

Vort3x avatar Oct 29 '08 04:10 Vort3x
Aceptado

Mejores prácticas mejoradas para cookies de inicio de sesión persistentes

Podría utilizar esta estrategia descrita aquí como mejor práctica (2006) o una estrategia actualizada descrita aquí (2015):

  1. Cuando el usuario inicia sesión exitosamente con Recordarme marcado, se emite una cookie de inicio de sesión además de la cookie de administración de sesión estándar.
  2. La cookie de inicio de sesión contiene un identificador de serie y un token . La serie y el token son números aleatorios imposibles de adivinar en un espacio suficientemente grande. Ambos se almacenan juntos en una tabla de base de datos, el token tiene un hash (sha256 está bien).
  3. Cuando un usuario que no ha iniciado sesión visita el sitio y presenta una cookie de inicio de sesión, el identificador de la serie se busca en la base de datos .
    1. Si el identificador de serie está presente y el hash del token coincide con el hash de ese identificador de serie, se considera que el usuario está autenticado . Se genera un nuevo token , se almacena un nuevo hash para el token sobre el registro anterior y se emite una nueva cookie de inicio de sesión para el usuario (está bien reutilizar el identificador de serie ).
    2. Si la serie está presente pero el token no coincide, se supone un robo . El usuario recibe una advertencia fuertemente redactada y todas las sesiones recordadas del usuario se eliminan.
    3. Si el nombre de usuario y la serie no están presentes, se ignora la cookie de inicio de sesión .

Este enfoque proporciona una defensa en profundidad. Si alguien logra filtrar la tabla de la base de datos, no le da al atacante una puerta abierta para hacerse pasar por usuarios.

splattne avatar Oct 28 '2008 21:10 splattne

Almacene su ID de usuario y un RememberMeToken. Cuando inician sesión con Recordarme marcado, generan un nuevo RememberMeToken (que invalida cualquier otra máquina que esté marcada como Recordarme).

Cuando regresen, búsquelos mediante el token Recuérdame y asegúrese de que el ID de usuario coincida.

 avatar Oct 28 '2008 21:10