PHPFunciones de hash de contraseña


Introducción

A medida que los servicios web más seguros evitan el almacenamiento de contraseñas en formato de texto plano, los lenguajes como PHP proporcionan varias funciones hash (no descifrables) para admitir el estándar de la industria más seguro. Este tema proporciona documentación para el hashing adecuado con PHP.

Sintaxis

  • string password_hash ( string $password , integer $algo [, array $options ] )
  • boolean password_verify ( string $password , string $hash )
  • boolean password_needs_rehash ( string $hash , integer $algo [, array $options ] )
  • array password_get_info ( string $hash )

Observaciones

Antes de PHP 5.5, puede usar el paquete de compatibilidad para proporcionar las funciones password_* . Se recomienda encarecidamente que utilice el paquete de compatibilidad si puede hacerlo.

Con o sin el paquete de compatibilidad, la funcionalidad correcta de Bcrypt a través de crypt() basa en PHP 5.3.7+. De lo contrario, debe restringir las contraseñas a conjuntos de caracteres solo ASCII.

Nota: si usa PHP 5.5 o una versión inferior, está usando una versión no compatible de PHP que ya no recibe actualizaciones de seguridad. Actualice tan pronto como sea posible, puede actualizar sus hashes de contraseña posteriormente.

Selección de algoritmo

Algoritmos seguros

Algoritmos inseguros

Los siguientes algoritmos de hashing son inseguros o no aptos para el propósito y, por lo tanto , no deben utilizarse . Nunca fueron adecuados para el hashing de contraseñas, ya que están diseñados para resúmenes rápidos en lugar de hashes de contraseñas lentas y difíciles de aplicar.

Si utiliza alguno de ellos , incluso las sales, debe cambiar a uno de los algoritmos de seguridad recomendados lo antes posible .

Algoritmos considerados inseguros:

Algunos algoritmos pueden usarse de manera segura como algoritmo de resumen de mensajes para probar la autenticidad, pero nunca como algoritmo de hashing de contraseña :

  • SHA-2
  • SHA-3

Tenga en cuenta que los hashes fuertes como SHA256 y SHA512 son ininterrumpidos y robustos, sin embargo, en general es más seguro usar las funciones hash bcrypt o argon2 , ya que los ataques de fuerza bruta contra estos algoritmos son mucho más difíciles para las computadoras clásicas.

Funciones de hash de contraseña Ejemplos relacionados