¿Es seguro almacenar el hash de la contraseña en una cookie y usarlo para iniciar sesión "recordarme"?

15

Quiero almacenar una cadena encriptada del hash de contraseña en una cookie y usar el hash para buscar al usuario e iniciar sesión (si quieren ser recordados).

¿Esto es seguro? La contraseña es hash unidireccional con SHA-512, 1024 iteraciones, usando una marca de tiempo para salt.

Me imagino que esto sería único debido a la sal de sello de tiempo.

    
pregunta Mohamad 05.12.2011 - 15:26
fuente

2 respuestas

22

No, esto no es seguro

Debes generar un número aleatorio largo y almacenarlo en una cookie. Este número aleatorio es esencialmente una contraseña más para este usuario. Por lo tanto, en el lado del servidor, solo almacena un hash adecuadamente salado de este número aleatorio.

Solo debe dar cada número una vez y solo debe ser válido para 1 inicio de sesión. Así que permita más de uno de esos hashes para cada usuario. Al iniciar sesión correctamente, genere un nuevo número aleatorio, proporcione el nuevo número en la cookie que le da a su usuario y almacene el hash (con sal) de este número en el lado del servidor.

(En una nota al margen, el MD5 ya no se considera lo suficientemente bueno para el hashing de la contraseña y un salt debe ser aleatorio; una marca de tiempo no es lo suficientemente aleatoria. Busque el almacenamiento de contraseñas aquí para obtener más información al respecto)

    
respondido por el Jacco 05.12.2011 - 15:36
fuente
9

No. Para verificar esto, tendría que almacenar el valor de hash en su servidor para comparar, de lo contrario no podría invalidar las sesiones de inicio de sesión; o incluso peor, necesitaría almacenar la contraseña de texto sin formato y la marca de tiempo utilizada para regenerar el valor. Si va a almacenar un valor entre dos máquinas para comparar, ese valor debe ser aleatorio.

Si bien su método aumenta el trabajo que se debería hacer para comprometer el sistema, crea un trabajo más complejo que almacenar un valor aleatorio y expone una debilidad de fuerza bruta, especialmente cuando muchos navegadores registran el tiempo de creación de una cookie, exponiendo así las marcas de tiempo que probablemente utilizaría.

    
respondido por el Jeff Ferland 05.12.2011 - 15:37
fuente

Lea otras preguntas en las etiquetas