服务器端Firebase + PHP的电话验证验证

问题描述 投票:0回答:1

我正在创建一个自定义用户管理系统,涉及应用程序服务器上的所有应用程序数据,但是应该通过firebase对手机进行身份验证。当新用户在系统上注册时,将进行Firebase电话身份验证。在从firebase成功进行身份验证后,注册数据将通过API转至服务器。现在问题是,如何检查服务器端是否通过firebase验证了电话号码?如果我允许在没有服务器端firebase验证验证的情况下进行注册,则API请求可能会被某人欺骗。我目前正在使用kreait/firebase-php ^4.18 Firebase SDK for PHP。我正在使用的流程在Currunt Flow of Registration下面展示,我想要实现的流程也可以给出,Proposed Solution to Secure the Registration flow.

php firebase server firebase-authentication firebase-security
1个回答
1
投票

当用户首次使用其电话号码成功进行身份验证时,电话号码将存储在Firebase身份验证用户列表中的用户记录中,并且可以视为已验证。

一旦电话号码与您的Auth数据库中的用户相关联,您就可以确定

  • 电话号码有效
  • 电话号码已成功用于在该号码与所述用户相关联的时间点对用户进行认证
  • 电话号码无法与其他用户关联

您不应该假设此电话号码现在已“验证”。如官方Firebase文档页面中所述:

安全问题

仅使用电话号码进行认证虽然方便,但与其他可用方法相比安全性较低,因为可以在用户之间轻松转移拥有电话号码。此外,在具有多个用户配置文件的设备上,任何可以接收SMS消息的用户都可以使用设备的电话号码登录帐户。

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

资料来源:https://firebase.google.com/docs/auth/web/phone-auth#security-concerns

PS:向用户添加电话号码的唯一方法是通过管理员SDK,此时您有责任确保电话号码属于用户。

PSS:据我所知(并已检查),Firebase REST API不会公开“已验证的电话号码”信息。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.