0

OpenID 协议的电子邮件地址未经过验证。

考虑以下情况:

  1. 我使用 Gmail 帐户创建了一个 SO 帐户,我的电子邮件是 abc@gmail.com

  2. 现在,另一个人有办法在一些也使用 abc@gmail.com 的 OpenID 提供商处伪造,他使用该提供商登录 SO。

  3. 现在,SO 将链接这两种登录方法,并且该人可以完全访问我的 SO 帐户。

那么,在实践中,如何将上述黑客攻击的风险降到最低呢?

4

2 回答 2

0

在 Stack Overflow/Stack Exchange 的特定情况下,只有当帐户具有相同的电子邮件地址并且用户从已知用于验证电子邮件地址的服务登录时才会合并帐户。Gmail、Facebook 和 Yahoo 等服务会在注册期间验证您的电子邮件地址,因此可以安全地信任他们返回的电子邮件地址。如果您使用自己的 OpenID 提供程序,则不会被识别,因此不会自动合并帐户。

于 2013-06-25T22:57:20.187 回答
0

对于您的方案,您做了几个假设:

  • 中继方(在您的示例中为 SO),不验证提供商,仅通过标识符(即电子邮件)识别用户
  • 中继方信任任何提供者来提供身份验证(例如假 OpenID 提供者)

将风险降到最低(这绝不是一份详尽的清单,但这是一个开始)

  • 用户的 OpenID 至少应该是(提供者 + 电子邮件)
  • 这与 OpenID 想法背道而驰,但仅与受信任的提供者而不是任何人进行中继
  • 中继方应该使用nonce
  • RP/OP 之间的 ssl
于 2013-06-25T22:53:35.153 回答