gpt4 book ai didi

php - 使用单个查询和每个用户密码 salt 的用户登录

转载 作者:可可西里 更新时间:2023-11-01 07:47:28 26 4
gpt4 key购买 nike

我决定使用存储在数据库中的每个用户盐来实现用户登录。 salt 以密码为前缀,该密码使用 SHA 进行哈希处理并存储在数据库中。

在过去,当我不使用盐时,我会使用典型的方法来计算查询返回的行数,该查询使用用户输入的用户名和密码。但是,对于每个用户盐,您需要先获取盐,然后才能将其与存储的密码哈希进行比较。

因此,为了避免有两个查询(一个用于获取 salt,另一个用于验证输入凭据),我决定根据输入的用户名在单个查询中获取 salt 和散列密码。有点像

SELECT users.salt, users.password
FROM users
WHERE username = ?'

然后在服务器端代码 (PHP) 中,我将 salt 与输入的密码连接起来,对其进行哈希处理并将其与已经从数据库中获取的密码进行比较。

如果不清楚的话,我想关键的区别在于,在后一种方法中,我先在 PHP wheras 中检查凭据,然后再在数据库中完成。

这种方法在安全性或其他方面是否有任何缺点

最佳答案

您可以像这样在一个查询中完成此操作:

SELECT 
SHA1(CONCAT(users.salt, "password-input")) = users.passwordhash
WHERE
username = "username-input"

关于php - 使用单个查询和每个用户密码 salt 的用户登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1477944/

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