Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie verwende ich Passwort-Hashing mit PDO, um meinen Code sicherer zu machen?

Verwenden Sie einfach eine Bibliothek. Ernsthaft. Sie existieren aus einem bestimmten Grund.

Mach es nicht selbst. Wenn Sie Ihr eigenes Salz herstellen, MACHEN SIE ES FALSCH . Sie sollten eine Bibliothek verwenden, die das für Sie erledigt.

$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]);

Und beim 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
}