0

我有一个使用 OpenID 登录用户的网站。我正在使用的库在用户登录时返回用户配置文件。此配置文件包含用户的电子邮件、姓名、头像链接和OpenID 提供者返回的ID 。

我保持用户登录的策略是这样的:

  • 当用户第一次登录时,我根据 OpenID 返回的 ID 创建一个哈希码
  • 我将此哈希码与用户 ID 一起存储在 2 个 cookie 中。
  • 当用户访问我的网站时,我会检查这些 cookie,如果它们可用,则尝试匹配 ID 和哈希码,如果正确,我会登录用户。

现在的问题是:如果这个 cookie 信息以某种方式从用户那里被盗,黑客可以很容易地登录而不是用户自己。每次用户登录并更新用户的 cookie 时,我都可以创建一个新的哈希码,但这会使其他浏览器/计算机 cookie 的信息无效。

由于 StackOverflow 网站没有遇到此类问题,我想知道我应该怎么做才能保护我的登录策略并添加功能以使用户保持登录状态。

4

2 回答 2

2

执行此操作的标准方法是分配一个无意义的会话 ID 并将其作为 cookie 发送;在您的数据库中,您可以将用户的凭据信息与该会话 ID 一起存储。当用户注销时,您可以使该会话 ID 无效。

于 2012-04-11T05:35:10.653 回答
1

这不是让客户保持登录状态的所有机制的问题吗?如果你登录到你的 gmail,我窃取了你的 cookie,并将它们放在我自己的浏览器中,则无法区分我的浏览器和你的浏览器,我可以访问你的 gmail。我相信,没有办法阻止你建议的那种攻击(除了用户保持他们的计算机不受病毒等可能窃取 cookie 的影响)

于 2012-04-07T10:05:41.943 回答