【问题标题】:Secure OpenID user authentication安全的 OpenID 用户身份验证
【发布时间】:2012-05-18 08:35:12
【问题描述】:

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

  1. 使用 OpenID 验证用户。

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

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

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

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

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

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

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

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

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

  4. 我正在使用 SSL 来确保流量不会被拦截。

提前致谢。

【问题讨论】:

    标签: security authentication openid


    【解决方案1】:

    一般来说,您最好为您所使用的支持 OpenID 的语言使用一些身份验证架构。它不仅更安全,而且更容易,您编写的代码更少,而且您不必维护或测试该代码。有用于 PHP、python、c#/asp.net、rails 的。很多框架也有支持。

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

    我认为你有两个问题:

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

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

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

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

    【讨论】:

    • 感谢@imichaelmiers,这是一个很大的帮助。这就是我要做的。你能推荐一个 PHP 的身份验证架构吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 2011-02-15
    • 2012-03-18
    • 2012-05-22
    • 1970-01-01
    相关资源
    最近更新 更多