A versão 5.5 do PHP virá com uma API voltada para permitir que administradores e desenvolvedores armazenem senhas de forma segura. Com a ajuda dela, os desenvolvedores serão capazes de usar apenas uma linha de código para gerar um hash com salt de uma senha usando bcrypt, aumentando a segurança.
$hash = password_hash($password, PASSWORD_DEFAULT);
Um salt não é necessário; ele será autogerado pela API caso não esteja presente e adicionado com um componente aleatório da senha. A verificação da senha é igualmente fácil:
password_verify($password, $hash);
Caso os hashes gerados caiam em mãos erradas, os criminosos são conseguirão reconstruir o texto correspondente das senhas sem um esforço considerável, já que as senhas originais são bastante longas. O método hash Bcrypt é um dos que são mais intensivos computacionalmente e requerem muita memória, tornando difícil quebrá-lo mesmo com GPUs. Um sistema com oito núcleos de CPU pode gerar cerca de cinco mil hashes por segundo, e um GPU atual pode entregar resultados semelhantes. Em comparação, fazer hashes com SHA1 deve gerar números na ordem de dezenas de milhões.
Com os salts, o uso de rainbow tables também é limitado. Caso os usuários queiram, podem não apenas especificar seu próprio salt na chamada a função hash, mas também ajudar a complexidade (custo) do método bcrypt, ou mudar o método de hash completamente. Essa informação é armazenada com o hash da senha. (mais…)