9

在学习 PHP 如何支持 Unicode 的过程中,我一直在研究如何让我的“记住我”cookie 更加安全。但是,有一些我不明白的事情以及我自己的一些想法,我想提出一些建议和意见。

1) 有什么方法可以采用不涉及 cookie 的“记住我”功能?很好奇,因为在存储身份验证 cookie 时存在明显的安全漏洞。并不是说几乎所有东西都没有安全风险。

2) 由于我不使用银行或“高度敏感”的信息,是否有必要要求用户在更“高调”的区域输入密码?如果我们只是要求他们在两分钟后基本上登录,那么记住登录似乎是一种浪费。

3) 存储身份验证 cookie 的绝对最佳方法是什么(除了“根本没有”)?我目前对该区域进行了编码以在 cookie 中设置单个令牌(使用 time()、他们的用户代理、remote_addr 和 salt - sha256 进行散列)。当所述用户回来时,它会检查“会话”表中的令牌,然后将 IP 与 IP 匹配以将其登录。如果令牌存在但 IP 不匹配,它会默默地取消设置 cookie 并要求他们以身份登录如果他们没有。

再次感谢大家。

4

1 回答 1

6
  1. 本质上,没有。它需要在客户端进行某种存储;如果没有 cookie(或类似的,如 HTML 5 客户端存储),您将无法知道谁是客户端。

  2. 这是您必须做出的权衡。至少,应该需要旧密码或其他某种形式的确认(电子邮件?)才能将其更改为新密码。

  3. 除非您对所有通信进行加密,否则您无法绝对防止 cookie 被盗和随后的冒充。这是唯一安全的方法。当然,将 IP、用户代理等与 cookie 相关联可能会有所帮助,但依靠加密更容易也更安全。(我误解了这里的意思——cookie 值的重要之处在于它是随机的,所以你应该改变你的世代方法,使其难以预测)

于 2011-01-20T05:02:52.773 回答