PHP senha_verify

Resumo : neste tutorial, você aprenderá a usar a password_verify()função PHP para verificar se uma senha corresponde a uma senha com hash.

Introdução à função PHP password_verify()

Ao lidar com senhas, você nunca deve armazená-las no banco de dados como texto simples. E você deve sempre fazer o hash das senhas usando um algoritmo de hash unidirecional seguro.

O PHP forneceu a função integrada password_hash()que cria um hash a partir de uma senha em texto simples. Observe que a password_hash()função é uma função hash unilateral. Isso significa que você não consegue encontrar seu valor original.

Para verificar se uma senha de texto simples corresponde a uma senha com hash, você deve fazer o hash da senha de texto simples e comparar os hashes.

No entanto, você não precisa fazer isso manualmente, pois o PHP fornece uma função integrada password_verify()que permite comparar uma senha com um hash:

password_verify(string $password, string $hash): boolLinguagem de código:  PHP  ( php )

O password_verify()tem dois parâmetros:

  • $passwordé uma senha de texto simples correspondente.
  • $hashé um hash criado pela password_hash()função.

A password_verify()função retorna truese a senha corresponder ao hash ou falsenão.

Exemplo de função PHP password_verify()

O exemplo a seguir usa a password_verify()função para verificar se a senha Password1 corresponde a um hash:

<?php

$hash = '$2y$10$hnQY9vdyZUcwzg2CO7ykf.a4iI5ij4Pi5ZwySwplFJM7AKUNUVssO';
$valid = password_verify('Password1', $hash);

echo $valid ? 'Valid' : 'Not valid';Linguagem de código:  PHP  ( php )

Saída:

ValidLinguagem de código:  PHP  ( php )

Na prática, você usará a password_verify()função a seguir para verificar um login:

  • Encontre um usuário no banco de dados por nome de usuário (ou e-mail)
  • Use a password_verify()função para combinar a senha fornecida pelo usuário com uma senha com hash.
  • Se a senha corresponder ao hash, você faz login do usuário. Caso contrário, você emitirá uma mensagem de erro.

O código será semelhante ao seguinte:

<?php

// ...

$user = find_user_by_username($username);

if ($user && password_verify($password, $user['password'])) {
    // log the user in
    session_regenerate_id();
    $_SESSION['user_id'] = $user['id'];
} else {
    echo 'Invalid username or password';
}Linguagem de código:  PHP  ( php )

No tutorial a seguir, você aprenderá a usar a password_verify()função no formulário de login .

Resumo

  • Use a função PHP password_verify()para verificar se uma senha corresponde a uma senha com hash criada pela password_hash()função.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *