【发布时间】:2015-12-02 05:30:08
【问题描述】:
嗯,
过去,当客户端连接到站点时,我将其保留为$_SESSION。
现在,我想用 cookie 实现“记住我”的可能性。
出于安全原因,我应该把cookie的值放在什么地方?
谢谢。
【问题讨论】:
-
这个问题已经回答了here。
嗯,
过去,当客户端连接到站点时,我将其保留为$_SESSION。
现在,我想用 cookie 实现“记住我”的可能性。
出于安全原因,我应该把cookie的值放在什么地方?
谢谢。
【问题讨论】:
短期用户身份验证通常使用会话,而长期身份验证依赖于存储在用户浏览器中的长期 cookie。用户通常将此功能作为一个标记为“在这台计算机上记住我”的复选框来体验。在不构建可轻易利用的后门的情况下实现“记住我”功能需要一个小的工程壮举。
简单的解决方案:只需将用户凭据存储在 Cookie 中
任何看起来像remember_user=1337 的长期身份验证解决方案都容易被滥用。由于管理员帐户的用户 ID 通常较低,remember_user=1 几乎肯定会让您登录到特权用户帐户。
持久认证令牌
另一个不太容易受到攻击的常见策略是在用户选中“记住我”框时生成唯一令牌,将唯一令牌存储在 cookie 中,并拥有一个将令牌与每个用户的令牌相关联的数据库表帐户。这里还有很多地方可能会出错,但毫无疑问,它比以前的策略有所改进。
为了更深入的了解,强烈推荐这个Implementing Secure User Authentication in PHP Applications with Long-Term Persistence
【讨论】: