0

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

  1. 使用 OpenID 验证用户。

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

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

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

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

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

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

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

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

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

  4. 我正在使用 SSL 来确保无法拦截流量。

提前致谢。

4

1 回答 1

1

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

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

我认为你有两个问题:

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

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

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

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

于 2012-05-18T19:25:42.020 回答