Estoy en un viaje de aprendizaje de todo sobre seguridad de la información y, como he leído sobre cómo proteger una contraseña, no entendí bien por qué debería frenar el hashing de una contraseña y cómo hacerlo. hazlo correctamente .
Sí, lleva más tiempo descifrarlo pero eventualmente se resquebrajará, incluso si esto ocurre en años.
Además, sería genial si me puede dar algún consejo sobre qué agregar al código a continuación para asegurarlo más. Tengo muchas ganas de hacer que una contraseña sea lo más segura posible.
$password = 'userinput';
$hash = password_hash($password, PASSWORD_DEFAULT);
Después de algunas investigaciones, entendí que password_hash es la mejor manera de hacerlo, ya que hace todo el trabajo correctamente (algoritmo de salt, crypt), y el bcrypt (PASSWORD_DEFAULT) es, por ahora, el más seguro de usar. También para el almacenamiento de la contraseña VARCHAR (255) es el recomendado.
-
No entendí bien para qué es la opción ['costo'], excepto que también se usa para ralentizar el hashing.
-
¿Debo usar un pimiento? ¿Y cómo incrustarlo en el código? ¿Debo almacenarlo en la base de datos, es de uso posterior? He leído esta publicación pero no pude averiguar cómo replicarlo usando password_hash como el código anterior.
-
Siguiendo este blog , si estoy usando un hash pre (pepper) en conjunto con el hash de paso, el hash puede contener NULL-bytes que son devastadores para la seguridad, así que ¿debo de alguna manera desinfectar el 'userinput' para eliminar el conjunto de caracteres '\ 0'? o simplemente haz lo que él dice:
- Usa la salida hexadecimal del pre-hash
- Base64 codifica la salida en bruto de un pre-hash
Por favor, si alguna de mis afirmaciones / preguntas es incorrecta, corríjame.
Un código junto con la explicación sería muy útil para mí. Esto me ayudaría mucho a comprender mejor la seguridad de la contraseña. Gracias
ACTUALIZACIÓN: Después de que esta pregunta haya sido marcada como duplicada, encontré una publicación bastante informativa sobre por qué es útil desacelerar el hashing. Pero eso fue solo un punto de toda mi pregunta.
Los 4 puntos aún no están claros ni han sido respondidos y no pude encontrar casi nada sobre ellos en ese post.
Una cosa que olvidé mencionar es que estoy codificando en php, y sería útil si el ejemplo del código se escribiera en php. Además, no creo que esta pregunta sea demasiado amplia ya que el tema de la publicación es simplemente la seguridad de la contraseña y no toda la seguridad de la información. He visto preguntas mucho más complejas y amplias aquí que las mías.