Trabalhando com senhas no PHP
Trabalhando com senhas no PHP
Quando estiver fazendo seu site, é bem interessantes se preocupar bastante com a senha dos usuários. Se aplicar apenas um MD5, ou SHA1, você estará apenas fazendo um hash rápido, mas que não é seguro. Com isso, não será tão difícil de descobrirem a senha por força bruta.
O PHP já tem uma biblioteca preparada para isso, que vai auxiliar a criar senhas.
Gerar Senha
Para gerar uma nova senha, utilize o password_hash
$pw = password_hash($senha, PASSWORD_BCRYPT);
Esse comando irá gravar em $pw sua senha gerada com método de criptografia CRYPT_BLOWFISH (sim, ele é bem mais seguro que o MD5).
Agora com esse $pw, você pode salvá-lo em seu banco de dados com mais segurança (lembrando que ele vai se utilizar de 60 caracteres).
Verificando a senha
Se precisar verificar se alguém preencheu a senha corretamente, utilize o password_verify
$result = password_verify($senha, $pw);
Esse comando vai validar se $senha está correta. O segundo parâmetro $pw é a senha criptografada que você já salvou no Banco de Dados. $result será um booleano (verdadeiro ou falso).
Aumentando a segurança
Você pode utilizar SALT para aumentar a dificuldade de descobrirem a senha utilizada. Você mesmo decide qual o o SALT (o PHP pede que tenha mais de 22 caracteres). Utilize-o na hora de gerar a senha.
$options = array('salt' => 'dsankasknsdajsdajkdsansdaknasdjksadjsand');
echo $pw1 = password_hash($senha, PASSWORD_BCRYPT, $options);
Além do SALT, você pode também aumentar a complexidade do algoritmo. Eu particularmente já gosto do valor padrão, que é 10, mas você pode ajustar como achar melhor.
$options = array('salt' => 'dsankasknsdajsdajkdsansdaknasdjksadjsand', 'cost' => 15);
echo $pw1 = password_hash($senha, PASSWORD_BCRYPT, $options);
Espero ter ajudado. Qualquer dúvida, fique à vontade para postar nos comentários :)