Comunidad de diseño web y desarrollo en internet online

Nuevo hashing de passwords y manejo de claves seguras en PHP 5.5

Nadie sensato guarda claves en texto plano en la base de datos de una aplicación web. Normalmente se toma el password y se "hashea" con un algoritmo como md5. El proceso usa un algoritmo de cifrado de un sólo camino que es, en teoría, matemáticamente irrompible. Luego el password nunca se vuelve a descifrar, sino que la clave que el usuario envía desde el cliente se cifra con el mismo algoritmo y del lado del servidor se comparan ambas versiones cifradas.

PHP historicamente ha usado el algoritmo MD5 o SHA1, tradicionales pero muy inseguros. En el pasado Defcon fue posible romper más del 50% de los hash MD5 que se presentaron, usando colisiones matemáticas y fuerza bruta. A partir de PHP5.5, el nuevo algoritmo de cifrado de hashs para passwords será bcrypt, que usa un nuevo proceso matemático 10 veces más fuerte.


Código nuevo de cifrado de contraseñas de PHP 5.5


Antes tu habrías escrito:

Código :

$hash = md5($clave_usuario);

Que no tenía "salt" (un modificar aleatorio interno del cifrado para hacer el descifrado por fuerza bruta más complejo)

Ahora es tan fácil como:

Código :

$hash = password_hash($password, PASSWORD_BCRYPT, ['cost' => 10]);
$match = password_verify($password, $hash);

Donde PASSWORD_BCRYPT es el nuevo algoritmo y 10 es el "costo" o complejidad de cifrado. La segunda linea es la que funciona para comparar un password contra un hash. La "sal" se genera automáticamente por server por app.

Si no has podido actualizar a PHP5.5 en tu servidor, siempre puedes usar la implementación en puro PHP y hacer tus apps de PHP más robustas y seguras. Te recomendamos que lo hagas ya.

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

El autor de este artículo ha cerrado los comentarios. Si tienes preguntas o comentarios, puedes hacerlos en el foro

Entra al foro y participa en la discusión

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate