我想在浏览器 cookie 中保存用户的身份验证信息以实现持久登录。正如他们所说,在 cookie 中存储任何 secret 信息(例如密码)是不安全的,但是为了拥有诸如“记住密码”之类的选项,我认为别无选择。
因此,如果用户想记住他的登录信息,并且如果我存储用户名(电子邮件)+ 不是密码,而是一些其他唯一信息,例如 cookie 中的 HASHED DB ID。然后我应该检查存储在 cookie 中的散列 ID 是否与存储在 Cookie 中的用户电子邮件匹配。 我认为任何人都可以很容易地看到存储在浏览器中的 cookie(例如在 Firefox 中, Options -> Cookies )。
那么这是否会像某人从保存 cookie 的计算机读取 cookie,然后在其他计算机上使用该信息设置 cookie 一样弱,他就会登录? (因为脚本会检查存储的电子邮件和哈希 ID 与数据库,它会匹配)?
如果不在数据库中存储其他信息(例如 session ID 等),是否可以改进这种方法? 谢谢
最佳答案
还有另一种选择。
对于每个用户,在登录并请求被记住时,创建一个长的随机字符串。
将此字符串与用户 ID 一起存储在您提供给用户的 cookie 中。
在您的数据库中存储字符串的适当加盐哈希值。
如果用户提供了一个记住我的 cookie,将随机字符串与您在数据库中的散列验证器匹配(就好像它是一个密码)。
如果匹配 -> 让用户登录并为他们创建一个新的记住我的 cookie。
如果不匹配 -> 请求用户名和密码。
关于php - 在 Cookie 中存储登录信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6340562/