"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como verificar senhas de usuários com segurança com a função password_verify do PHP?

Como verificar senhas de usuários com segurança com a função password_verify do PHP?

Publicado em 2024-11-05
Navegar:189

How to Verify User Passwords Securely with PHP\'s password_verify Function?

Descriptografando senhas criptografadas com PHP

Muitos aplicativos armazenam senhas de usuários com segurança usando algoritmos de criptografia como password_hash. No entanto, ao validar tentativas de login, é importante comparar a senha inserida com a versão criptografada e armazenada.

O problema da criptografia

password_hash emprega Bcrypt, um algoritmo de hashing, o que significa que a senha criptografada não pode ser revertida ou descriptografada. Este é um recurso de segurança que garante que mesmo que o banco de dados seja comprometido, os invasores não poderão acessar senhas em texto simples.

A solução: verificação de senha

Para validar senhas de usuários , use a função password_verify:

if (password_verify('input_password', $encrypted_password)) {
    // Password matches!
} else {
    // Invalid password.
}

Esta função compara a senha de entrada com a versão criptografada e retorna verdadeiro se corresponderem.

Modificando sua consulta SQL

Em vez de incluir o insira a senha na consulta SQL, use parametrização:

$sql_script = 'SELECT * FROM USERS WHERE username=?';

Isso protege contra ataques de injeção de SQL, evitando que usuários mal-intencionados manipulando sua consulta.

Exemplo

Aqui está um exemplo de uso de password_verify:

$username = $_POST['username'];
$input_password = $_POST['password'];

$sql_script = 'SELECT * FROM USERS WHERE username=?';

if ($result = $conn->query($sql_script, $username)) {
    if ($user = $result->fetch_assoc()) {
        if (password_verify($input_password, $user['password'])) {
            // Login successful!
        } else {
            // Invalid password.
        }
    } else {
        // User not found.
    }
}
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3