Mysql
 sql >> Database >  >> RDS >> Mysql

Come posso utilizzare l'hashing della password con PDO per rendere il mio codice più sicuro?

Basta usare una libreria. Sul serio. Esistono per una ragione.

Non farlo da solo. Se stai creando il tuo sale, STAI FACENDO SBAGLIATO . Dovresti utilizzare una libreria che se ne occupi per te.

$dbh = new PDO(...);

$username = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];
$hash = password_hash($password, PASSWORD_DEFAULT);

$stmt = $dbh->prepare("insert into users set username=?, email=?, password=?");
$stmt->execute([$username, $email, $hash]);

E al login:

$sql = "SELECT * FROM users WHERE username = ?";
$stmt = $dbh->prepare($sql);
$result = $stmt->execute([$_POST['username']]);
$users = $result->fetchAll();
if (isset($users[0]) {
    if (password_verify($_POST['password'], $users[0]->password) {
        // valid login
    } else {
        // invalid password
    }
} else {
    // invalid username
}