Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да използвам хеширане на пароли с PDO, за да направя кода си по-сигурен?

Просто използвайте библиотека. Сериозно. Те съществуват с причина.

  • PHP 5.5+:използвайте password_hash()
  • PHP 5.3.7+:използвайте password-compat (пакет за съвместимост за по-горе)
  • Всички останали:използвайте phpass

Не го правете сами. Ако създавате своя собствена сол, ГО ПРАВИШ ГРЕШНО . Трябва да използвате библиотека, която се справя с това вместо вас.

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

И при влизане:

$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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL 'user_id' в където клаузата е двусмислен проблем

  2. Как работи функцията UNHEX() в MySQL

  3. Как да разрешите отказан достъп за потребителя ‘root’@’localhost’ (използвайки парола:Да) Когато свържете MySQL база данни

  4. Как да създадете последователност в MySQL

  5. UNION заявка с модел на активен запис на codeigniter