gpt4 book ai didi

php - 我可以从数据库中获取我的盐,然后在同一个查询中检查密码吗?

转载 作者:行者123 更新时间:2023-11-29 04:24:59 24 4
gpt4 key购买 nike

我最近添加了一个类,它使用存储在成员表中的唯一盐。这是我使用盐之前的登录脚本:

    $sql = 'SELECT id, username FROM member WHERE username = ? AND pass = ?';

$result = $this->DB->query($sql, array($username, $pass));
foreach($result as $record) {
$user = [
"id" => $record['id'],
"username" => $record['name']];
}

if (empty($user)) {
// Display errors
} else {
// Login by sending the array of data to login function
self::login($user);
}

现在,我也想得到盐。有什么方法可以在不使用超过 1 个查询的情况下执行此操作?我可以通过查询开始让用户通过和加盐来使其工作,但有没有更好的方法。这感觉有点像黑客攻击,还是根本无法避免?

最佳答案

你可以这样做(假设 pass 创建为 MD5($salt . $password) 并且你有名为 salt 的列你的 member 表):

$sql = 'SELECT id, username FROM member WHERE username = ?
AND pass = MD5(CONCAT(member.salt, ?))';

这样 MySQL 会直接检查在 CONCAT 之后创建的存储哈希-ing 插入密码和盐。

关于php - 我可以从数据库中获取我的盐,然后在同一个查询中检查密码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13720510/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com