Firebase Phone Auth遭大量未知OTP请求滥用,寻求解决办法
阻止Firebase Phone Authentication短信滥用的解决方案
以下是针对你遇到的Firebase短信验证被滥用问题的具体解决方法:
启用Firebase App Check
这是Firebase官方防滥用工具,可验证请求是否来自合法应用:- 网站端:在Firebase控制台「App Check」页面为Web应用启用reCAPTCHA v3,前端集成App Check SDK,确保发起OTP请求时携带有效验证令牌。
- React Native端:iOS启用App Attest、Android启用SafetyNet Attestation,集成SDK后所有Firebase请求会自动附带验证令牌,拦截非法来源请求。
设置严格的短信配额与速率限制
在Firebase控制台「Authentication」→「Sign-in method」→「Phone number」中配置:- 单手机号每日请求OTP的最大次数(建议3-5次)
- 单IP地址每分钟/每小时的请求上限
- 全局每日短信发送总量阈值,超量后自动拦截
将OTP请求逻辑转移到后端
避免前端直接调用signInWithPhoneNumber,改为后端触发:- 用户前端输入手机号后,先完成人机验证(如reCAPTCHA v2)
- 前端将手机号和验证结果发送至后端
- 后端校验人机结果有效后,调用Firebase Admin SDK的
verifyPhoneNumber发送OTP
后端可额外添加IP黑名单、用户行为分析等校验,拦截异常请求
限制API密钥使用范围
检查Firebase Web API密钥是否被滥用:- 在控制台「项目设置」→「API密钥」中,为Web密钥添加限制:仅允许你的网站域名、RN应用包名/签名使用
- 禁止前端硬编码敏感密钥,必要时用环境变量或后端代理
添加Web应用防火墙(WAF)防护
针对网站端滥用,用Cloudflare或Google Cloud WAF设置规则:- 拦截频繁请求OTP的IP
- 识别并阻止带异常User-Agent的自动化请求
- 对OTP请求接口设置访问频率限制
完善监控与告警机制
- 在Firebase「Cloud Monitoring」创建告警规则,当短信发送量超过阈值(如单日300条)时立即通知
- 定期分析Authentication日志,找出新的滥用来源(IP、地区)并加入黑名单
内容的提问来源于stack exchange,提问作者Rahul Jain
相关产品推荐
相关产品推荐

