php - 在 Cookie 中存储登录信息

标签 php cookies

我想在浏览器 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/

相关文章:

firefox - Selenium IDE : How to detect secure cookies on page loaded with http://?

php - usort 对多个字段进行排序

javascript - 从 Google Universal Analytics 获取推荐和事件信息

ruby - Cookie 数据大小超过 4K - 但其 'only' 1100 字节已加密

php - Propel 在使用别名连接表时添加 CROSS JOIN 查询

java - 使用 Unirest JAVA 进行身份验证

ios - 有什么方法可以在 iOS 中使用 swift 将用户名和密码保存在设备中,这与 Android 中的偏好相同?

php - Bigcommerce 客户登录api(单点登录)无效登录问题

php - 从字符串中删除最后两个单词

php - 为什么 SoapClient 在文档/文字样式中使用 WSDL 返回带有额外键元素的数组?