Facebook登录的潜在安全问题?

时间:2012-05-18 11:35:21

标签: facebook security

我目前正在首次在我的网站上实施Facebook登录,我对这是多么安全有疑问。

我已经拥有一个包含用户的数据库,并且每个人都存储了一个电子邮件地址,所以我真的需要检查我从Facebook获得的电子邮件地址是否已经存在于我的数据库中,否则我会有重复用户的一些问题。如果用户已经在场,我只需将Facebook中的数据合并到我网站上的现有帐户中,然后连接用户。否则,我为他创建了一个帐户。

但事情就是这样:

  1. Alice使用电子邮件地址 alice@users.com 连接我的网站,但 Alice未在Facebook上注册使用该电子邮件地址

  2. Bob使用Alice的电子邮件地址 alice@users.com 在Facebook上注册,并使用在任何电话号码上收到的短信验证帐户(我检查过这是可能的,一个帐户可以是验证没有点击通过电子邮件收到的链接)。我同意Alice会通过她的电子邮件地址收到通知,但仍然可以这样做。

  3. Bob使用Facebook连接在我的网站上触发登录,同时使用Alice的电子邮件地址在Facebook上进行连接。

  4. Bob的Facebook帐户已激活并经过验证,我必须假设他已经在我的网站上有一个帐户,因为 alice@users.com 已经在我的数据库中,所以我联系了他而不是爱丽丝,他可以在爱丽丝的帐户上使用我的网站。

  5. =>我在几个网站上尝试过这种情况,只要我知道电子邮件地址,就可以连接别人的帐户(我创建的假账户;))。

    有没有人知道如何预防这些情况?

2 个答案:

答案 0 :(得分:10)

如果Facebook确实不需要确认电子邮件,然后充当openid风格的提供商,那么这是令人震惊的!但我想答案已经在你的问题中 - 不要链接/合并帐户。或者至少,如果没有先自己确认电子邮件,请不要通过Facebook登录尝试这样做。

您无法更改friendface的功能,因此您需要将facebook connect提供的电子邮件地址视为不受信任的数据。如果使用已在您的网站上拥有本机帐户的电子邮件进行Facebook连接登录尝试,请自行向他们发送电子邮件确认码 - 并执行facebook未能执行的操作。

另一种选择是,一旦用户登录到本机帐户,您可以根据需要允许他们从那里链接Facebook帐户。这也允许您为在两个站点上注册了不同电子邮件地址的用户支持facebook登录。

答案 1 :(得分:1)

这我觉得这不是facebook bug / flow。问题出在接受facebook登录的网站使用的算法中。

如果该电子邮件地址已在网站上注册,则不应接受Facebook登录。它可能被称为“Facebook登录”但不要忘记它确实是站点数据库的新帐户,应该被视为一个。

总之,如果网站使用电子邮件地址作为唯一标识,则不应接受具有相同电子邮件地址的facebook登录。