开发者社区> 问答> 正文

如何将密码哈希与PDO结合使用以使代码更安全?

我的代码实际上可以正常工作,但是它不是绝对安全的,我不想使用MD5,因为它不是那么安全。我一直在查找密码哈希,但不确定如何将其合并到代码中。

登录:

require_once DIR.'/config.php'; session_start();

$dbh = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_USERNAME, DB_USERNAME, DB_PASSWORD);

$sql = "SELECT * FROM users WHERE username = :u AND password = :p"; $query = $dbh->prepare($sql); // prepare $params = array(":u" => $_POST['username'], ":p" => $_POST['password']); $query->execute($params); // execute

$results = $query->fetchAll(); // then fetch

//hash passwords pls

if (count($results) > 0 ){ $firstrow = $results[0]; $_SESSION['username'] = $firstrow['username']; echo "Hello $username you have successfully logged in"; //header ("location:.php"); } else{ echo "Login Has Failed"; return; } 寄存器:

$dbh = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_USERNAME, DB_USERNAME, DB_PASSWORD);

$username = $_POST["username"]; $email = $_POST["email"]; $password = $_POST["password"];

$stmt = $dbh->prepare("insert into users set username='".$username."', email='".$email."', password='".$password."' "); $stmt->execute(); echo "

Thank you, you are registered

"; 谁能告诉我如何将其合并到我拥有的代码中?

展开
收起
保持可爱mmm 2020-05-10 19:38:52 364 0
1 条回答
写回答
取消 提交回答
  • 只需使用一个库。说真的 它们存在是有原因的。

    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 }来源:stack overflow

    2020-05-10 19:39:07
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载