Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como uso o hash de senha com PDO para tornar meu código mais seguro?


Basta usar uma biblioteca. Seriamente. Eles existem por uma razão.

Não faça você mesmo. Se você está criando seu próprio sal, VOCÊ ESTÁ FAZENDO ERRADO . Você deve estar usando uma biblioteca que lida com isso para você.
$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 no 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
}