我有一个传统的Devise用户身份验证系统,它简单地使用电子邮件和密码登录。我想在Facebook上添加登录信息。我有这个主要工作,但我很好奇处理边缘情况的安全问题。
让我们说这里的东西发生了:
此时我们有一个没有附加Facebook凭据的用户帐户,我们有一个没有附加用户的Facebook凭证,但他们都有相同的电子邮件。
所以在这一点上有两个选择:
选项2是首选,因为它对用户来说更容易,但它意味着通过Facebook访问帐户,这是以前从未联系过的Facebook。如果服务器从Facebook获得的电子邮件地址可能以任何方式被欺骗或更改,这是一个巨大的安全问题。
但我的服务器相信用户对电子邮件是安全的,Facebook也是如此。但我能相信他们之间的沟通吗?
答案 0 :(得分:1)
如果已在两项服务上确认电子邮件,则只能链接帐户。
在您这边,您应该确认用户的电子邮件(使用Devise's Confirmable module)。
在Facebook方面,他们应该发送一个verified_email
字段,确认该帐户的电子邮件地址已经确认。不幸的是,Facebook只返回verified
field,这不仅会受到电子邮件的影响,还会受到短信确认和输入有效信用卡的影响。
但是,似乎只有在确认后才会返回电子邮件。有关详细信息,请参阅this SO question。问题是我找不到确认这一点的官方文档(this is as close as I could get),所以在此期间我建议你自己测试一下,这是绝对肯定的。如果您确实找到了正确的文档,请不要忘记在此处添加注释。