打开ID和安全性

时间:2013-07-16 07:06:19

标签: php security web openid

我即将在网站上实现这一点,并想知道我是否错过了某个地方。该网站是一个私人体育俱乐部,我们不希望任何人登录 - 他们必须是付费会员。但是,Open Id可能会使会员更加简单。

我已经使用'Openid.php'构建了一个测试,但这一切似乎都有效,但我想知道将它与真正的俱乐部帐户相关联。它是如何知道通过谷歌登录的那个人真的是会员?

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

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

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

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

1 个答案:

答案 0 :(得分:0)

OpenID的要点是OpenID提供商(例如Google)负责登录详细信息,如密码和可能的双因素身份验证等。您的服务器只是竖起了一个“我们已经确定这是用户XYZ”。然后,您可以随意使用此信息。每当Google告诉您“这是用户XYZ”时,您可以确定Google认为是“XYZ”的用户。这是一个没人能伪造的独特身份; OpenID协议本身注意这个事务是安全的,不能被欺骗。

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