我想将用户的认证信息保存在浏览器cookie中以进行持久登录。正如他们所说,它绝对不可能将任何秘密信息(如密码)存储在cookie中,但为了拥有诸如“记住密码”之类的选项,我认为没有其他选择。将登录信息存储在Cookie中
因此,如果用户想记住他的登录信息,并且我存储了用户名(电子邮件)+不是密码,而是其他一些独特信息,如Cookie中的HASHED DB ID。然后我应该检查存储在cookie中的哈希ID是否与存储在Cookie中的用户电子邮件相匹配。 正如我想任何人都可以很容易地看到存储在浏览器中的cookie(例如在Firefox中,选项 - > Cookies)。
因此,这将是脆弱的,因为有人从其保存的计算机中读取cookie,然后在其他计算机上设置cookie并使用该信息登录? (由于脚本将检查存储的电子邮件和数据库哈希ID,它会匹配)?
这种方法能否在数据库中不存储其他信息(如会话ID等)的情况下进行改进? 谢谢
一种方法是简单地存储用户的ID在cookie中,而且还具有非持续性验证的cookie。具有ID cookie但没有经过身份验证的cookie的用户可以浏览您的系统,但第一次尝试进行更改时会提示您输入密码。如果密码正确,则认证的cookie将被设置,用户不会再被询问。由于cookie是非持久性的,认证只会持续到会话结束。 – GordonM 2011-06-14 08:04:15
@GordonM,谢谢,我认为amazon.com有相同的方法。我很想知道,如果您访问cookie,可以说电子邮件+和一些散列信息,那么您有多难在浏览器中设置这些cookie? – Roman 2011-06-14 08:15:28
我会在cookie中存储很少的东西。持久性ID cookie将仅使用有问题的用户的ID,而非持久性认证cookie将为真或假。尽量避免在cookie中存储更多的信息,而不是完成任务所必需的信息,就好像您发送的只是一个窥探黑客必须继续使用的ID,而如果您发送其他信息可能会给黑客更多线索攻击你的系统。 – GordonM 2011-06-14 10:49:52