我最近遇到了这样一种情况,一个站点假设如果同一 OpenID 网络的两个不同人的凭据生成相同的电子邮件地址,那么他们就是同一个人。另外,最近我遇到了这样一种情况,一个站点假设如果两个不同的 OpenID 提供者生成相同的电子邮件地址,那么它们就是同一个人。
这两个对我来说似乎都是安全问题。仅仅因为 Facebook 认为我的电子邮件地址是 root@army.mil 并不意味着您应该允许我访问您网站上的 root@army.mil 帐户。
我在这里错过了什么吗?处理这些情况的正确方法是什么?
我最近遇到了这样一种情况,一个站点假设如果同一 OpenID 网络的两个不同人的凭据生成相同的电子邮件地址,那么他们就是同一个人。另外,最近我遇到了这样一种情况,一个站点假设如果两个不同的 OpenID 提供者生成相同的电子邮件地址,那么它们就是同一个人。
这两个对我来说似乎都是安全问题。仅仅因为 Facebook 认为我的电子邮件地址是 root@army.mil 并不意味着您应该允许我访问您网站上的 root@army.mil 帐户。
我在这里错过了什么吗?处理这些情况的正确方法是什么?
您的担心是有道理的,这种行为不应该被允许。引用myopenid 帮助页面:
OpenID 是一个去中心化的身份系统。OpenID 身份只是一个 URL。OpenID 所做的只是提供一种方法来证明您拥有一个 URL(身份)。
与该 URL 关联的任何其他信息都不是 [必然] 可信的,除非 OpenID 提供者也恰好对该信息具有权威性(例如,Google 是 OpenID 提供者和电子邮件提供者,所以当 Google 说“此 [google] URL 也是此 GMail 帐户的所有者”,您可以信任它)。即使那些采取额外步骤来验证用户电子邮件地址的网站对他们来说仍然没有权威,并且验证仅证明用户在验证时控制了地址(即电子邮件可能已易手,例如,如果它是公司电子邮件,或者用户可能已经注册了共享电子邮件等)。
正确的行为是: