【问题标题】:Make Firebase phone authentication more secure使 Firebase 电话身份验证更加安全
【发布时间】:2018-08-27 05:00:01
【问题描述】:

我已经使用电话身份验证在 Firebase 中创建了一个帐户。但是,从文档中,它提到:

如果您在应用中使用基于电话号码的登录,您应该提供它 以及更安全的登录方法,并通知用户 使用电话号码登录的安全权衡

我找不到将密码注入用户数据库的字段。

我应该启用密码/电子邮件登录方法吗?有什么文档可以参考吗?

我使用以下方式添加了电子邮件和密码:

createUserWithEmail:email:password:completion:

创建了 2 个帐户:

我应该将我的问题改写为:

如果用户注销,再次登录时应该使用电话号码还是电子邮件和密码?

【问题讨论】:

  • 澄清一下,您不需要创建密码。您可以简单地updateEmail(primaryEmail) 并通过发送电子邮件验证来验证它。如果用户无法访问他们的电话号码,他们可以触发密码重置流程来恢复他们的帐户(这将在此过程中添加密码)。如果他们更改了电话号码,他们可以在此过程中将其更新为新号码等。您甚至可以在之后删除密码,如果您不想要它,请取消链接。
  • Firebase 身份验证还添加了使用电子邮件链接登录。你也可以考虑使用它:firebase.google.com/docs/auth/ios/email-link-auth

标签: firebase firebase-authentication


【解决方案1】:

这是它在文档中所说的:

仅使用电话号码进行身份验证虽然方便,但不如其他可用方法安全,因为电话号码的所有权可以在用户之间轻松转移。此外,在具有多个用户配置文件的设备上,任何可以接收 SMS 消息的用户都可以使用设备的电话号码登录帐户。

如果您在应用中使用基于电话号码的登录,则应将其与更安全的登录方法一起提供,并告知用户使用电话号码登录的安全权衡。

所以这意味着最好使用其他方法,例如电子邮件/密码方法。

启用后,用户可以使用他的电子邮件创建帐户,您不需要密码,只需要他创建帐户后的用户 ID。

更多信息在这里:

https://firebase.google.com/docs/auth/ios/password-auth

【讨论】:

  • 谢谢@Peter Haddad。我只是无法理解用户帐户创建部分。在您上面添加的文档中,我们需要使用“createUserWithEmail:email:password:completion:” 由于用户在使用电话(短信)验证后已经创建,是否会再次重新创建?这意味着重复的用户帐户?
  • 它将在控制台中写入两次,一次用于电话号码,一次用于电子邮件,但将是相同的用户 ID firebase.google.com/docs/auth/web/account-linking
  • 错误链接,这是针对 ios 的:firebase.google.com/docs/auth/ios/account-linking@user1872384
  • 你已经回复了我更新的问题,哈哈……谢谢老兄。让我试试
【解决方案2】:

基于@Peter Haddad 的回答:

更新了代码以链接电话验证用户和电子邮件/密码验证方法。

FIRAuthCredential *credential =
[FIREmailAuthProvider credentialWithEmail:userEmail
                                 password:userPassword];

[[FIRAuth auth]
 .currentUser linkWithCredential:credential
 completion:^(FIRUser *_Nullable user, NSError *_Nullable error) {
     // ...
     FIRUser *tmpUser = user;

 }];

您应该在控制台中看到这些(只有一行具有 2 种身份验证类型,而不是 2 行):

【讨论】:

    猜你喜欢
    • 2020-12-12
    • 2021-07-13
    • 1970-01-01
    • 2021-03-10
    • 2021-06-10
    • 2018-12-14
    • 2018-10-09
    相关资源
    最近更新 更多