¿Cómo proteger el hash y la sal para las contraseñas de PHP?

Salting and hashing es una técnica para almacenar la contraseña en una base de datos. En criptografía, salar significa agregar algún contenido junto con la contraseña y luego codificarlo. Así que la sal y el hachís proporcionan dos niveles de seguridad. La salazón siempre crea contraseñas únicas, es decir, si hay dos contraseñas iguales, después de la salazón, la string resultante cambiará. El salting utilizado junto con el hashing aumenta el nivel de seguridad de las contraseñas.

Salting y hashing: en PHP, el almacenamiento de la contraseña mediante salting y hash se realiza mediante el método password_hash(). Este método toma tres parámetros y devuelve un hash final de esa contraseña.

Sintaxis:

string password_hash( string $pass, int $algo, array $options )

Parámetros:

  • $pass: este parámetro contiene la contraseña que se protegerá y almacenará en la base de datos.
  • $algo: Especifica el algoritmo hash que se utiliza para crear el hash de $pass. Algunos de los parámetros del algoritmo en php son:
    1. PASSWORD_DEFAULT: use el algoritmo bcrypt (predeterminado a partir de PHP 5.5.0). Esta constante está diseñada para cambiar con el tiempo a medida que se agregan algoritmos nuevos y más fuertes a PHP.
    2. PASSWORD_BCRYPT: Es el algoritmo CRYPT_BLOWFISH para crear el hash. El resultado en una string de 60 caracteres o dar un FALSO en caso de falla.
  • $opciones: Es la parte de salazón. Se necesita sal en forma de factor de costo. Es opcional, si se deja vacío, se agrega el costo predeterminado a la string (es 10 en la mayoría de los casos). Tenga en cuenta que un mayor costo conduce a una contraseña más protectora y, por lo tanto, supone una gran carga para la CPU.

Valor devuelto: Devuelve la contraseña cifrada y FALSO en caso de fallo.

Ejemplo: este ejemplo es una demostración de cómo se muestra password_hash(), se crea un hash y se compara.

<?php
  
// Store the string into variable
$password = 'Password';
  
// Use password_hash() function to
// create a password hash
$hash_default_salt = password_hash($password,
                            PASSWORD_DEFAULT);
  
$hash_variable_salt = password_hash($password,
        PASSWORD_DEFAULT, array('cost' => 9));
  
// Use password_verify() function to
// verify the password matches
echo password_verify('Password',
            $hash_default_salt ) . "<br>";
  
echo password_verify('Password',
            $hash_variable_salt ) . "<br>";
  
echo password_verify('Password123',
            $hash_default_salt );
  
?>

Producción:

1
1
0

En este ejemplo, el método password_verify() se usa para comparar el hash creado con la string ingresada como parámetro. Toma el hash y la string para compararlos como parámetros y devuelve verdadero si la contraseña es correcta; de lo contrario, devuelve falso.

Publicación traducida automáticamente

Artículo escrito por piyush25pv y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *