[英]Can Facebook Omniauth email address be securely trusted?
我有一个传统的Devise用户身份验证系统,该系统仅使用电子邮件和密码即可登录。 我想添加Facebook登录。 我的工作大部分都在进行,但是我对处理边缘案例的安全性感到好奇。
假设发生这种情况:
此时,我们有一个用户帐户,没有附加的Facebook凭据,并且我们有一个Facebook凭据,没有附加的用户,但是他们都有相同的电子邮件。
因此,目前有两种选择:
选项2是首选,因为它对用户来说更容易,但是它意味着通过Facebook授予从未访问过Facebook的帐户的访问权限。 如果可以以任何方式欺骗或更改服务器从Facebook获得的电子邮件地址,这将是一个巨大的安全问题。
但是我的服务器相信用户可以安全地接收电子邮件,Facebook也是如此。 但是我可以信任他们之间的通信吗?
如果两个服务均已确认电子邮件,则只能链接帐户。
在您这一边,您应该确认用户的电子邮件(使用Devise的Confirmable模块 )。
在Facebook方面,他们应该发送一个verified_email
字段,以确认该帐户的电子邮件地址已被确认。 不幸的是,Facebook仅返回一个verified
字段 ,该字段不仅受电子邮件影响,而且受SMS确认和输入有效信用卡的影响。
但是,似乎只有在确认电子邮件后,才会退回该电子邮件。 有关更多信息,请参见此SO问题 。 问题是我找不到可以证实这一点的官方文档( 这与我能得到的非常接近 ),因此与此同时,我建议您自己进行测试,以确保绝对正确。 如果您找到正确的文档,请不要忘记在此处添加评论。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.