sql >> Databasteknik >  >> RDS >> Mysql

Hur använder jag lösenordshashning med PDO för att göra min kod säkrare?

Använd bara ett bibliotek. Allvarligt. De finns av en anledning.

Gör det inte själv. Om du skapar ditt eget salt, GÖR DU DET FEL . Du bör använda ett bibliotek som hanterar det åt dig.

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

Och vid inloggning:

$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
}


  1. Vilken SQL-fråga är bättre, MATCH MOT eller GILLA?

  2. LÄGRE LIKE vs iLIKE

  3. NLS_LANG inställning för JDBC tunn drivrutin?

  4. hur ändrar man stapelfärg i MPandroidCharts baserat på något individuellt värde lagrat i sqlite?