【问题标题】:Open Id and security开放 ID 和安全性
【发布时间】:2013-07-16 07:06:19
【问题描述】:

我即将在一个网站上实现这一点,想知道我是否在某个地方漏掉了重点。该网站是一个私人体育俱乐部,我们不希望任何人登录 - 他们必须是付费会员。然而,Open Id 可能会让会员的一切变得更简单。

我已经使用“Openid.php”构建了一个测试,这一切似乎都有效,但我想知道是否将其链接到真实的俱乐部帐户。它怎么知道通过谷歌登录的用户真的是会员?

我注意到,当我开始在 Stack Overflow 上使用 Open Id 时,它可以正常工作,我无需验证/确认任何内容,并且创建了 SO 帐户,我可以使用 Google 登录。没有人要求我验证通过 Google 登录的人确实是创建 SO 帐户的同一个人(我)。我认为它可能是通过比较电子邮件地址来做到这一点的,认为它们匹配时我们是同一个人,然后存储 Open Id Google 身份。

但是,因此在我看来,如果我使用这种方法,如果流氓知道俱乐部成员的电子邮件地址,那么她/他需要与一些 Open Id 提供商做的就是暂时将他们的电子邮件更改为俱乐部成员的,进入俱乐部登录页面,使用相关的 Open Id 按钮,一切都会匹配,他们就会进入。电子邮件地址不是私人的,所以不安全。

因此,在我看来,为了使这相当安全,我需要一种机制,让会员使用他或她的真实俱乐部登录名/密码登录(至少一次),然后有一种验证和保存 Open Id 的方法响应身份,有效地说“是的,这真的是我”。

不太方便,但更安全。我说的对吗?

【问题讨论】:

    标签: php security web openid


    【解决方案1】:

    OpenID 的重点是 OpenID 提供商(例如 Google)负责登录详细信息,例如密码和可能的两因素身份验证等。您的服务器刚刚获得了一个“我们已经确定这是用户 XYZ” 的赞许。然后,您可以随意使用此信息。每当 Google 告诉您“这是用户 XYZ”,您可以确定 Google 知道的用户是“XYZ”。这是一个独一无二的身份,任何人都无法伪造; OpenID 协议本身会确保此交易是安全的,不会被欺骗。

    这当然意味着 OpenID 提供商也需要值得信赖和安全,但这取决于您是否信任它。最后,您为该用户创建一个帐户,并将其与 Provider + ID 的 OpenID 凭据相关联,而不仅仅是电子邮件地址本身。如果另一个用户通过不同的提供商但使用相同的电子邮件地址登录,则由您决定如何做。如果您不关心自己服务中的电子邮件,则没有问题。如果您确实在服务中使用电子邮件作为标识符,则需要一些确认反馈循环以确保没有人可以劫持其他用户的帐户。

    【讨论】:

    • 是的,这是您的评论“最终,您为该用户创建了一个帐户并将其与提供者 + ID 的 OpenID 凭据相关联”。 SO似乎以某种方式自动做到了这一点。如果不与成员明确互动说“是的,这就是我”,我看不到如何做到这一点。
    • 实际上,我注意到,通过 Google,我得到的一切——无论我要求什么或可选的——都是“联系人/电子邮件”。
    • 如果电子邮件地址在您的系统中是唯一的(首次用户),您可以简单地静默创建帐户而无需任何反馈。无需确认任何事情;用户知道他在谷歌认证的身份,无需再次告诉他。如果该电子邮件地址已在您的系统中使用来自不同的 OpenID 提供商,则您只需要进行一些确认。
    • 如果用户已经在 OpenID 提供商处登录并且提供商没有显示任何自己的确认页面,我可以看到您的担忧。因此,用户只需单击即可注册并登录,无需任何反馈。如果两个人共享一台计算机,而另一个人仍在 OpenID 提供者的站点上登录,这可能是个问题。我错误地认为这是 OpenID 提供者的问题。无论您是否显示通知都没有太大变化,这不是安全增强或任何东西。只需确保用户可以轻松查看他的登录身份。
    • 感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-31
    • 1970-01-01
    相关资源
    最近更新 更多