Como proteger hash e salt para senhas PHP?
Salting e hashing é uma técnica para armazenar a senha em um banco de dados. Na criptografia, sal significa adicionar algum conteúdo junto com a senha e, em seguida, hash. Portanto, o sal e o hash fornecem dois níveis de segurança. O salting sempre cria senhas exclusivas, ou seja, se houver duas senhas iguais, após o salting, a string resultante será alterada. Salting usado junto com hashing aumenta o nível de segurança das senhas.
Salting e hashing: No PHP, o armazenamento da senha por salting e hashing é feito pelo método password_hash(). Este método usa três parâmetros e retorna um hash final dessa senha.
Sintaxe:
string password_hash( string $pass, int $algo, array $options )
Parâmetros:
- $pass: este parâmetro contém a senha que deve ser protegida e armazenada no banco de dados.
- $algo: especifica o algoritmo de hash usado para criar o hash de $pass. Alguns dos parâmetros do algoritmo em php são:
- PASSWORD_DEFAULT: Use o algoritmo bcrypt (padrão a partir do PHP 5.5.0). Essa constante é projetada para mudar com o tempo, conforme algoritmos novos e mais fortes são adicionados ao PHP.
- PASSWORD_BCRYPT: É o algoritmo CRYPT_BLOWFISH para criar o hash. O resultado é uma string de 60 caracteres ou dá um FALSE em caso de falha.
- $options: É a parte salgada. Leva sal no fator de custo de forma. É opcional; se deixado em branco, o custo padrão é adicionado à string (é 10 na maioria dos casos). Observe que mais custo leva a uma senha mais protetora e, portanto, sobrecarrega a CPU.
Valor de retorno: ele retorna a senha com hash e FALSE em caso de falha.
Exemplo: Este exemplo é uma demonstração de como mostrar o password_hash(), fazer o hash e compará-lo.
<?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 );
?>
Saída:
1 1 0
Neste exemplo, o método password_verify() é usado para comparar o hash criado com a string inserida como parâmetro. Leva o hash e a string para serem comparados como parâmetros e retornam true se a senha estiver correta, caso contrário, retorna false.
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva