我正在创建一个自定义用户管理系统,涉及应用程序服务器上的所有应用程序数据,但是应该通过firebase对手机进行身份验证。当新用户在系统上注册时,将进行Firebase电话身份验证。在从firebase成功进行身份验证后,注册数据将通过API转至服务器。现在问题是,如何检查服务器端是否通过firebase验证了电话号码?如果我允许在没有服务器端firebase验证验证的情况下进行注册,则API请求可能会被某人欺骗。我目前正在使用kreait/firebase-php ^4.18
Firebase SDK for PHP。我正在使用的流程在下面展示,我想要实现的流程也可以给出,
当用户首次使用其电话号码成功进行身份验证时,电话号码将存储在Firebase身份验证用户列表中的用户记录中,并且可以视为已验证。
一旦电话号码与您的Auth数据库中的用户相关联,您就可以确定
您不应该假设此电话号码现在已“验证”。如官方Firebase文档页面中所述:
安全问题
仅使用电话号码进行认证虽然方便,但与其他可用方法相比安全性较低,因为可以在用户之间轻松转移拥有电话号码。此外,在具有多个用户配置文件的设备上,任何可以接收SMS消息的用户都可以使用设备的电话号码登录帐户。
如果您在应用中使用基于电话号码的登录,则应提供更安全的登录方式,并告知用户使用电话号码登录的安全权衡。
资料来源:https://firebase.google.com/docs/auth/web/phone-auth#security-concerns
PS:向用户添加电话号码的唯一方法是通过管理员SDK,此时您有责任确保电话号码属于用户。
PSS:据我所知(并已检查),Firebase REST API不会公开“已验证的电话号码”信息。