好吧,
过去,当客户端连接到网站时,我将其保留为$_SESSION
。
现在,我想提出"记住我"用饼干。
出于安全原因,我应该将cookie的值放在哪里?
感谢。
答案 0 :(得分:1)
短期用户身份验证通常使用会话,而长期身份验证依赖于存储在用户浏览器上的长期cookie。用户通常会将此功能体验为标记为“在此计算机上记住我”的复选框。实现“记住我”功能而不构建一个可以轻易利用的后门需要一个小的工程专长。
天真的解决方案:只需在Cookie中存储用户凭据
任何看起来像remember_user=1337
的长期身份验证解决方案都是滥用的。由于管理员帐户通常具有较低的用户ID,因此remember_user=1
几乎肯定会将您登录到特权用户帐户。
持久身份验证令牌
另一种常见的策略,更不容易受到攻击,只是在用户检查“记住我”框时生成一个唯一的令牌,将唯一令牌存储在cookie中,并拥有一个数据库表,将令牌与每个用户关联起来帐户。有许多事情在这里仍然可能出错,但毫无疑问是对以前战略的改进。
为了更深入的了解,我强烈推荐这个Implementing Secure User Authentication in PHP Applications with Long-Term Persistence