我有一个使用 OpenID 登录用户的网站。我正在使用的库在用户登录时返回用户配置文件。此配置文件包含用户的电子邮件、姓名、头像链接和OpenID 提供者返回的ID 。
我保持用户登录的策略是这样的:
- 当用户第一次登录时,我根据 OpenID 返回的 ID 创建一个哈希码
- 我将此哈希码与用户 ID 一起存储在 2 个 cookie 中。
- 当用户访问我的网站时,我会检查这些 cookie,如果它们可用,则尝试匹配 ID 和哈希码,如果正确,我会登录用户。
现在的问题是:如果这个 cookie 信息以某种方式从用户那里被盗,黑客可以很容易地登录而不是用户自己。每次用户登录并更新用户的 cookie 时,我都可以创建一个新的哈希码,但这会使其他浏览器/计算机 cookie 的信息无效。
由于 StackOverflow 网站没有遇到此类问题,我想知道我应该怎么做才能保护我的登录策略并添加功能以使用户保持登录状态。