Red de conocimiento informático - Material del sitio web - Cómo almacenar de forma segura las contraseñas de los usuarios

Cómo almacenar de forma segura las contraseñas de los usuarios

La mayoría de los desarrolladores de sitios web necesitan diseñar sistemas de cuentas de usuario. Uno de los aspectos más importantes de un sistema de cuentas es cómo proteger las contraseñas de los usuarios. Las bases de datos de usuarios de algunas grandes empresas se filtran de vez en cuando, por lo que debemos tomar algunas medidas para proteger las contraseñas de los usuarios para que incluso si el sitio web se ve comprometido, no cause ningún daño importante. Si también almacena MD5 de contraseñas de usuario, eso es realmente un poco débil.

La mejor manera de proteger tus contraseñas es utilizar hash de contraseña salados. El hash de contraseñas es algo sencillo, pero mucha gente comete este error. A continuación, espero entrar en más detalles sobre cómo aplicar hash a las contraseñas correctamente y por qué debería hacerlo.

Importante

Si planea escribir su propio código para realizar hash de contraseñas, deténgase ahora. Es fácil cometer un error al hacer esto. Este recordatorio se aplica a todos: ¡no escriba su propio algoritmo de hash de contraseña! Una solución comprobada al problema de guardar contraseñas es utilizar phpass o el código fuente proporcionado en este artículo.

Qué es un algoritmo hash

Hash("hello") = 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

Hash("hbllo") = 58756879c05c68dfac9 712fad6a93f8146f337a69afe7dd238f3364946366

hash("vals") = c0e81794384491161f1777c232bc6bd9ec38f616560b120fda8e90f383853542

El algoritmo hash es una función unidireccional. Función unidireccional. Puede convertir cualquier cantidad de datos en una "huella digital" de longitud fija, un proceso irreversible. Mientras los datos de entrada cambien, incluso si cambian un bit, el valor hash de salida será completamente diferente. Esta característica es excelente para contraseñas. Queremos cifrar la contraseña guardada utilizando un algoritmo irreversible, pero al mismo tiempo necesitamos verificar la exactitud de la contraseña cuando el usuario inicia sesión.

En un sistema de cuentas que utiliza algoritmos hash, el proceso general de registro de usuario y verificación de identidad es el siguiente:

1. Los usuarios crean sus propias cuentas

. 2. La contraseña del usuario se codifica y se almacena en la base de datos. Las contraseñas sin texto claro se almacenan en el disco duro del servidor.

3. Cuando el usuario inicia sesión, la contraseña ingresada por el usuario se codifica y se compara con el valor hash de la contraseña almacenado en la base de datos.

4. Si los valores hash son exactamente iguales, la contraseña ingresada por el usuario se considera correcta. En caso contrario, se considerará que el usuario ha introducido una contraseña no válida.

5. Repetir los pasos 3 y 4 cada vez que el usuario intente iniciar sesión.

En el paso 4, no le digas al usuario si la cuenta o la contraseña son incorrectas. Simplemente muestre un mensaje genérico de que la cuenta o contraseña es incorrecta. Esto evitará que un atacante enumere nombres de usuario válidos.

También es importante tener en cuenta que la función hash utilizada para proteger la contraseña no es exactamente la misma que la función hash que se ve en la clase de estructura de datos. Por ejemplo, las funciones hash que implementan tablas hash están diseñadas para ser rápidas, pero no lo suficientemente seguras. Solo se pueden utilizar funciones hash criptográficas para el hash de contraseñas, como SHA256, SHA512, RipeMD, WHIRLPOOL, etc.

Un concepto común es que las contraseñas son seguras sólo después de haber sido codificadas. Obviamente esto es incorrecto. Hay muchas formas de recuperar rápidamente contraseñas de texto sin cifrar a partir de hashes. ¿Recuerdas esos sitios web para crackear md5? En estos sitios, simplemente envía el hash y conoce el resultado en menos de un segundo.

Obviamente, el simple hecho de cifrar contraseñas está lejos de satisfacer nuestras necesidades de seguridad...

Lo anterior es un fragmento del artículo vinculado a continuación

Por favor, enlace aquí Ver el artículo:

/articles/web/28527.html

Se espera que se adopte la satisfacción con el artículo~