PHP 5.5 - API de Senhas


O objetivo principal dessa API é padronizar/facilitar o trabalho de crypt.
Com essa nova api, foram criadas quatro novas funções:
Vamos ver o uso das duas funções mais importantes (e úteis) dessa API..

password_hash

O método algoritmo (constante) e uma lista opções (opcional).
Por exemplo:
<?php
// Usando as opções default
echo password_hash("rasmuslerdorf", PASSWORD_DEFAULT) . "\n";
// $2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
// Definindo o custo e o salt
$options = [
'cost' => 7,
'salt' => 'BCryptRequires22Chrcts',
];
echo password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options) . "\n";
// $2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq
A vantagem de usar esse método é que você não precisa montar o salt como acontecia no bcrypt.
É esse valor retornado pelo password_hash que você deverá salvar no banco de dados.

password_verify

Uma vez que você já tem o hash da senha do seu usuário salvo no banco, você precisa de uma forma de - no futuro - verificar se a senha que ele digitou (texto plano) combina com a o hash no seu banco de dados, e você fará isso usando o método password_verify.
Ele recebe dois parâmetros: a senha em texto plano e o hash da senha à ser comparada.
<?php
// Valor salvo no banco de dados
$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq';
// Senha digitada pelo usuário
$senha = 'rasmuslerdorf';
if (password_verify($senha, $hash)) {
echo 'Senha correta';
} else {
echo 'Senha incorreta';
}

Conclusão

Essa nova API de senhas do PHP veio pra ficar, e já consigo ver vários frameworks adotando seu uso como padrão… talvez o único empecilho seja que é uma versão muito recente, e isso deve demorar um pouco.
De qualquer forma, se você já poder usar o PHP 5.5, não há por que não usar essas funções para garantir a segurança dos dados de seus usuários. :)
Fonte: Thiago Belém (http://blog.thiagobelem.net/php-5-5-api-de-senhas)
    Blogger Comment
    Facebook Comment

0 comments:

Postar um comentário