Entonces, aprendí que lo nuevo en PHP 5.5 es password-hash () que funciona de manera muy parecida a crypt (). Lo que es más seguro (más lento) que md5 () o sha1 (). La cadena de resultados es algo + hash + salt, que se puede pasar como está a password-Verify () para verificar la contraseña. Hasta ahora entiendo cómo funciona.
Algunas preguntas del día del juicio final que quedan:
Q1) ¿Cuál es el nombre del formato de resultado / protocolo / convención?
P2) Sin embargo, lo que no obtengo es que toda la sal está incluida en la base de datos. Si es un badguy® donde obtener estos, tiene todas las partes del rompecabezas. En el pasado, aprendí a poner (parte de) la sal fuera de la base de datos: en la fuente, incluso basándola en los valores de RAM / sistema / hardware, por lo que ni siquiera está en el disco. ¿Por qué no se facilita esto, o cómo debo hacerlo? Por supuesto, podría hacer un hash doble con una sal diferente, ¿o hay una mejor manera?
P3) Además, en la mentalidad del día del juicio final que requiere la seguridad, creo que el único punto de falla password_hash () será un objetivo de alto valor, y podría facilitar los ataques MITM mucho más fácilmente que la cripta más autocontenida ( ). Me imagino que escribir un "mal" algo y establecerlo como PASSWORD_DEFAULT algo sería más fácil que alterar crypt (). Sin embargo, no he buscado en el código / módulos de back-end de PHP, solo estoy especulando.
Consideraciones bienvenidas. La respuesta aceptada será la que obtenga el mayor número de votos / censo para las preguntas 2/3 en un plazo máximo de una semana y tenga la pregunta 1 verificable correcta.