Mejores prácticas:método más seguro para almacenar las contraseñas en una tabla?[cerrado]

StackOverflow https://stackoverflow.com/questions/1592608

Pregunta

Estoy usando PHP.Yo solía usar mysql nativo de la función password() para almacenar contraseñas.Me dijeron que la contraseña (a) no es seguro.¿Cuál sería el mejor método para almacenar las contraseñas en PHP?es MD5?

¿Fue útil?

Solución

Respuesta Actualizada De 2016:

El ganador de la La APS (La contraseña Hash Competencia) fue Argon2.El Hashing de contraseñas con Argon2 es la mejor práctica, a partir del 2016.

La APS corrió de 2013 a 2015 como un concurso abierto—el mismo tipo de proceso como de NIST AES y SHA-3 competiciones, y la manera más efectiva de desarrollar un estándar de criptografía.Hemos recibido 24 candidatos, incluyendo a muchos excelentes diseños, y seleccionado un ganador, Argon2, un algoritmo diseñado por Alex Biryukov, Daniel Dinu, y Dmitry Khovratovich de la Universidad de Luxemburgo.

Le recomendamos que utilizar utilizar Argon2 en lugar de legado de algoritmos.

El la implementación de referencia que está disponible en GitHub.

Respuesta Actualizada De 2012:

El original de la respuesta que le dio a continuación una vez fue considerado una de las mejores prácticas.Sin embargo, los avances en el hash de la tecnología de computación, han hecho que estos sistemas vulnerables.En adelante, la única contraseña segura hash esquemas iterativos hash tales como bcrypt y PBKDF2.Para una discusión completa, ver Jeff Atwood del análisis.

Respuesta Original De 2009:

Yo recomiendo que primero anteponiendo un sal el valor de su contraseña, seguido por hash la cadena resultante con un razonablemente fuerte función de hash como SHA256.Esta asegura que en contra de lo obvio (contraseñas de texto sin formato) y la no tan obvia (ataque mediante Tablas de arco iris).

Tenga en cuenta que si usted almacenar las contraseñas en esta forma, no ser capaz de recuperar un usuario contraseña perdida.Sólo podrán restablecer las contraseñas.Esto es debido a que voy a utilizar hash de una vía.Pero esta limitación es generalmente vale la pena el sacrificio a cambio de una contraseña más segura del sistema de almacenamiento.Incluso si su base de datos se ve comprometida, sus contraseñas del usuario todavía va a ser sumamente difícil y, probablemente, poco práctico para recuperar por una sería atacante.

Otros consejos

Usted necesita la sal de la contraseña.

vBulletin hace un trabajo bastante bueno en el almacenamiento de contraseñas.md5(md5(contraseña) + sal);

Discutir con la otra respuesta, VBulletin hace un horrible trabajo de hashing de contraseñas.La sal es sólo 3 caracteres, solo una fracción aumentar la seguridad de su aplicación.

Echa un vistazo http://www.openwall.com/phpass/ .Ellos hacen un trabajo excelente de la utilización de un largo hash, único para cada contraseña, y la ejecución de la contraseña a través de md5 miles de veces.Es uno de los mejores hash sistemas para php por ahí.

Si usted puede evitar el almacenamiento de la contraseña de usuario que es su mejor opción, de la omi.El uso de OpenId (como Stackoverflow) para autenticar al usuario.O Vivir De Autenticación (http://dev.live.com/liveid/).Si usted realmente, realmente necesita para autenticar a los usuarios a ti mismo;¿qué Asaf dice en su respuesta.:)

La sal y el hash.

Normalmente utilizamos un guid aleatorio como la sal y, a continuación, SHA512 a hash.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top