"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo verificar las contraseñas de los usuarios de forma segura con la función password_verify de PHP?

¿Cómo verificar las contraseñas de los usuarios de forma segura con la función password_verify de PHP?

Publicado el 2024-11-05
Navegar:828

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

Descifrar contraseñas cifradas con PHP

Muchas aplicaciones almacenan contraseñas de usuario de forma segura utilizando algoritmos de cifrado como contraseña_hash. Sin embargo, al validar los intentos de inicio de sesión, es importante comparar la contraseña ingresada con la versión cifrada y almacenada.

El problema del cifrado

password_hash emplea Bcrypt, un algoritmo de hash, lo que significa que la contraseña cifrada no se puede revertir ni descifrar. Esta es una característica de seguridad que garantiza que incluso si la base de datos está comprometida, los atacantes no puedan acceder a las contraseñas de texto sin formato.

La solución: verificación de contraseña

Para validar las contraseñas de los usuarios , utilice la función password_verify:

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

Esta función compara la contraseña ingresada con la versión cifrada y devuelve verdadero si coinciden.

Modificación de su consulta SQL

En lugar de incluir la ingrese la contraseña en la consulta SQL, use la parametrización:

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

Esto protege contra ataques de inyección SQL al evitar que usuarios malintencionados manipulando su consulta.

Ejemplo

Aquí hay un ejemplo del uso de contraseña_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.
    }
}
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3