使用OpenID时保持登录的安全策略

时间:2012-04-07 09:59:26

标签: authentication cryptography openid

我有一个使用OpenID登录用户的网站。我正在使用的库,在用户登录时返回用户个人资料。此个人资料包含用户的电子邮件,姓名,头像的链接以及OpenID提供商返回的 ID

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

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

现在问题是这样的:如果这个cookie信息以某种方式被用户窃取,黑客可以轻松登录而不是用户自己。我可以在每次用户登录时创建一个新的哈希码并更新用户的cookeis,但它会使其他浏览器/计算机cookie的信息无效。

由于StackOverflow网站没有遇到这样的问题,我想知道如何保护我的登录策略并添加保持登录用户的功能。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

对于让客户端保持登录的所有机制,这不是问题吗?如果你登录你的gmail,我偷了你的cookie,并把它们放在我自己的浏览器中,就无法区分我的浏览器和你的浏览器,我可以访问你的gmail。我相信没有办法阻止你提出的那种攻击(除了用户保持他们的计算机没有可能窃取cookie的病毒等)