我应该在cookie中存储什么以在用户登录时实现"记住我"

hal*_*sed 12 php cookies login

我的网站有一个登录系统,存储在数据库中的用户的详细信息是userid(每个用户和标识符唯一),电子邮件地址(唯一),显示名称(不唯一),密码和membersince.
现在我应该在饼干中存储什么?我正在考虑将用户ID存储在cookie中,并且过期日期然后如果用户在注册后重新访问我的网站检查cookie并将其登录(对我来说哪种看起来不对)并销毁cookie如果他决定退出
*一点点解释也会非常有帮助.谢谢

Luk*_*ský 13

如果使用只有应用程序知道的密钥对用户ID进行签名,则只能将用户ID存储在cookie中.否则,用户可以将cookie更改为任何内容并以其他人身份登录.因此,如果要存储用户标识,还要使用密钥(理想情况下使用HMAC)存储用户标识的散列,并且当您要将其记录时,计算相同的散列并将其与cookie中的散列进行比较.另一种解决方案是生成随机令牌,将其存储在数据库中并在cookie中使用它.如果它足够随意,那么很少有人会猜到另一个人的代币.