从数据库验证散列密码[复制](Verifying a hashed password from da

2019-09-30 02:11发布

这个问题已经在这里有一个答案:

  • 如何从数据库verify_password 2个回答

所以我有一个细微的工作没有散列密码,但当然是一个登录页面,这是不安全的,所以我决定哈希注册时的密码。 但我不知道如何以及在哪里我应该用verify_password当我选择从数据库的密码。
我用一段时间,看看是否有与这样输入的用户名和密码的结果:

$q = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$x = $conn->query($q);
if ($x->num_rows > 0) {
    while ($row = $x->fetch_assoc()) {
        //Logged in seccesfully!
    }
} else {
    // Username or password is wrong!
}

Answer 1:

password_hash()函数可以简化我们的生活和我们的代码是安全的。 当你需要散列密码,只需将其提供给该函数,它将返回,你可以在你的数据库中存储的哈希值。

$hash = password_hash($password, PASSWORD_DEFAULT);

现在,您已经看到了如何生成散列与新的API,让我们来看看如何验证密码。 请记住,你存储哈希值在数据库中,但它是你当用户登录该password_verify()函数接受一个简单的密码和散列字符串作为它的两个参数的普通密码。 如果哈希匹配指定的密码,它返回true。

<?php
if (password_verify($password, $hash)) {
    // Success!
}
else {
    // Invalid credentials
}

更多信息阅读



文章来源: Verifying a hashed password from database [duplicate]
标签: php mysqli