繁体   English   中英

可以安全地信任Facebook Omniauth电子邮件地址吗?

[英]Can Facebook Omniauth email address be securely trusted?

我有一个传统的Devise用户身份验证系统,该系统仅使用电子邮件和密码即可登录。 我想添加Facebook登录。 我的工作大部分都在进行,但是我对处理边缘案例的安全性感到好奇。

假设发生这种情况:

  1. 用户当前未经身份验证,但是拥有一个具有电子邮件“ foo@bar.com”的现有帐户
  2. 用户单击“使用Facebook登录”,授权来自Facebook的访问
  3. Facebook回呼我的服务器,显示电子邮件为“ foo@bar.com”

此时,我们有一个用户帐户,没有附加的Facebook凭据,并且我们有一个Facebook凭据,没有附加的用户,但是他们都有相同的电子邮件。

因此,目前有两种选择:

  1. 向用户投诉该电子邮件地址已被另一个用户使用,并且要将Facebook添加到他们的帐户,他们必须首先登录(使用密码)并关联Facebook帐户。
  2. 或者直接将他们登录到具有相同电子邮件的帐户,然后将facebook凭据附加到他们的帐户。

选项2是首选,因为它对用户来说更容易,但是它意味着通过Facebook授予从未访问过Facebook的帐户的访问权限。 如果可以以任何方式欺骗或更改服务器从Facebook获得的电子邮件地址,这将是一个巨大的安全问题。

但是我的服务器相信用户可以安全地接收电子邮件,Facebook也是如此。 但是我可以信任他们之间的通信吗?

如果两个服务均已确认电子邮件,则只能链接帐户。

在您这一边,您应该确认用户的电子邮件(使用Devise的Confirmable模块 )。

在Facebook方面,他们应该发送一个verified_email字段,以确认该帐户的电子邮件地址已被确认。 不幸的是,Facebook仅返回一个verified字段 ,该字段不仅受电子邮件影响,而且受SMS确认和输入有效信用卡的影响。

但是,似乎只有在确认电子邮件后,才会退回该电子邮件。 有关更多信息,请参见此SO问题 问题是我找不到可以证实这一点的官方文档( 这与我能得到的非常接近 ),因此与此同时,我建议您自己进行测试,以确保绝对正确。 如果您找到正确的文档,请不要忘记在此处添加评论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM