安全的OpenID用户身份验证

时间:2012-05-18 08:35:12

标签: security authentication openid

我的目标是在系统中进行安全登录,例如stackoverflow使用。我是一个新手,但你可能已经看到我整天都在查看有关安全性的stackoverflow文章。作为这项研究的结果,我现在制定了一个攻击计划。特别是这个页面是一个很好的帮助Using OpenID for website Authentication。您能告诉我以下系统是否是一个安全系统,如果不是,我应该如何改进系统。

  1. 使用OpenID验证用户。

  2. 一旦用户通过OpenID验证,就可以从OpenID获取用户的电子邮件地址。

  3. 哈希电子邮件地址并存储在会话变量中。

  4. 将哈希电子邮件地址与数据库中的哈希电子邮件地址列表进行比较

  5. 根据哈希的电子邮件地址返回适合该用户的内容。

  6. 特别是我对使用电子邮件地址而不是ProviderOpenID感到紧张。

    请假设我(因为我在其他stackoverflow页面上找到了这些问题的答案):

    1. 使用后正确销毁会话。

    2. 设置我的服务器以将会话数据存储在无法访问的位置。

    3. 以安全的方式设置我的数据库。

    4. 我使用SSL来确保无法截获流量。

    5. 提前致谢。

1 个答案:

答案 0 :(得分:1)

通常,您可以更好地使用支持OpenID的语言使用某种身份验证体系结构。它不仅更安全,更简单,编写更少的代码,而且您不必维护代码或测试代码。 PHP,python,c#/ asp.net,rails都有。很多框架也都有支持。

首先,为什么不使用提供的ID?

我认为你有两个问题:

  1. openID提供商可能会返回与提供商不同的域的电子邮件地址。

    例如,gmail可以正确验证我,但我可以指定我的电子邮件地址是billg@microsoft.com。然后你会读到我的身份,因为我是比尔盖茨,尽管事实并非如此。当然有一些方法可以防止这种情况发生,但标准系统可能包含了保护措施,即使它没有,但是其他人有责任修复它们,而其他人则会考虑这些问题。

  2. 如果我正确阅读维基百科article,则openID ID不一定是电子邮件地址

    这不是安全问题,但确实会破坏预期的行为。