我正在尝试停止使用md5()来存储和比较密码。因此,我想开始使用password_hash()。
以前我是这样做的,我会在他们的会话或cookie中存储用户名和密码的md5值(如果他们选择了“记住我”),然后检查数据库是否存在任何用户与该用户名和md5的密码匹配。我意识到这不太安全,这就是为什么我想停止这个做法。
现在我不能再这样做了,因为password_hash()总是改变的,所以我不能在他们的会话中存储哈希值,然后在数据库中检查它,因为我需要对未哈希的密码使用password_verify()。
我的问题是,如果我在用户表中成功登录时存储一个哈希的“会话ID”和“令牌”,然后将其与用户ID一起存储在其会话/cookie中以便进行数据库检查,这样安全吗?当我说哈希的“会话ID”和“令牌”时,我指的是随机大数字的sha256或甚至md5哈希...
示例:
用户登录->在用户的cookie/session中存储哈希的“会话ID”和“令牌”,并更新他们在数据库中的行,使其包含哈希的“会话ID”和“令牌”。
用户访问网站->代码检查他们的浏览器会话/cookie变量是否存在于数据库中的“会话ID”和“令牌”。如果是,则假定找到的行代表当前用户。
任何见解都将不胜感激。
以前我是这样做的,我会在他们的会话或cookie中存储用户名和密码的md5值(如果他们选择了“记住我”),然后检查数据库是否存在任何用户与该用户名和md5的密码匹配。我意识到这不太安全,这就是为什么我想停止这个做法。
现在我不能再这样做了,因为password_hash()总是改变的,所以我不能在他们的会话中存储哈希值,然后在数据库中检查它,因为我需要对未哈希的密码使用password_verify()。
我的问题是,如果我在用户表中成功登录时存储一个哈希的“会话ID”和“令牌”,然后将其与用户ID一起存储在其会话/cookie中以便进行数据库检查,这样安全吗?当我说哈希的“会话ID”和“令牌”时,我指的是随机大数字的sha256或甚至md5哈希...
示例:
用户登录->在用户的cookie/session中存储哈希的“会话ID”和“令牌”,并更新他们在数据库中的行,使其包含哈希的“会话ID”和“令牌”。
用户访问网站->代码检查他们的浏览器会话/cookie变量是否存在于数据库中的“会话ID”和“令牌”。如果是,则假定找到的行代表当前用户。
任何见解都将不胜感激。
$salts = [ 'salt' => 12, ]; password_hash("password", PASSWORD_BCRYPT, $salts)
。 - Kirs Sudh