首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用准备好的语句验证来自MySQL数据库的哈希密码

使用准备好的语句验证来自MySQL数据库的哈希密码
EN

Stack Overflow用户
提问于 2020-04-25 05:19:45
回答 2查看 175关注 0票数 0

我正在尝试使用password_hash()password_verify()函数从我的MySQL数据库中验证我的用户的散列密码。我正在尝试使用准备好的PHP语句来实现这一点,以增加安全性,但没有成功。有人知道为什么吗?

代码如下:

代码语言:javascript
运行
复制
//check if password is linked to username
$checkpass = $conn->prepare("SELECT user_password FROM user_details WHERE user_password=?");
$checkpass->bind_param("s", $preppass);
$preppass = $password;
$getpass = $checkpass->execute();

//get and check result
$checkpass->bind_result($getpass);
$checkpass->fetch();
if (!password_verify($password, $getpass)) {
    echo "<script>console.log('Incorrect username or password!')</script>";
    return false;
    exit;
}
echo "S<script>console.log('Successfully logged in!')</script>";
$conn->close();

下面是数据库:

Database Layout

我尝试过的:

Unable to extract password hash from database with prepared statements

Verify hashed password from database

我真的很感激在这方面能帮上忙。

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-25 05:39:51

您必须使用用户名而不是密码来查找散列密码,因为您不知道散列密码是什么。然后使用password_verify()检查输入的密码是否与散列密码匹配。

代码语言:javascript
运行
复制
$checkpass = $conn->prepare("SELECT user_password FROM user_details WHERE username=?");
$checkpass->bind_param("s", $username);
$checkpass->execute();

//get and check result
$checkpass->bind_result($getpass);
$checkpass->fetch();
if (!password_verify($password, $getpass)) {
    echo "<script>console.log('Incorrect username or password!')</script>";
    return false;
    exit;
}
echo "S<script>console.log('Successfully logged in!')</script>";
$conn->close();
票数 1
EN

Stack Overflow用户

发布于 2020-04-25 05:39:45

因为您准备好的SQL语句使用的是? (WHERE user_password=?"),所以看起来$checkpass->bind_param("s", $preppass);试图将$prepass绑定到不存在的参数:s

使用WHERE user_password=:s" (声明一个命名语句参数)或$checkpass->bind_param(1, $preppass); (将您的纯密码绑定到语句中的第一个? )。

As per the documentation.

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61417611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档