如何防范Firebase Phone Auth遭滥用?寻求技术解决方案
Firebase Phone Auth 滥用防护方案及替代选择
问题背景
近期我们的iOS应用Firebase Phone Auth遭滥用:未知攻击者通过不同IP,用大量手机号调用Google.cloud.identitytoolkit.v1.AuthenticationService.SendVerificationCode接口发送垃圾请求,每天造成约200美元成本损失。已开启全配置的AppCheck完全无效,该接口也没有单IP请求配额限制;联系官方支持,对方只会重复文档内容,根本没做实际调查。试过Blocking functions,但它是在短信发送后才触发的,根本拦不住这种滥用。
可行防护措施
- 加一层自定义网关做限流:在客户端和Firebase之间搭个API网关(比如Cloudflare Workers、Google Cloud Endpoints),给
SendVerificationCode接口加规则——单个手机号或IP在1小时内最多请求3次,超了直接拦截,从请求源头掐住滥用。 - 前端加自定义人机验证:别光依赖AppCheck,调用短信接口前先加个简单的人机验证(比如滑动拼图、点选验证),确保请求是真实用户操作,不是脚本批量发起的。
- 绑定设备标识校验:要求客户端请求时带上唯一设备标识(比如IDFA加应用签名哈希),在网关或自己的后端校验这个标识,限制单个设备的请求次数,防止同一设备批量刷请求。
- 启用Firebase Abuse Prevention:检查下是否开启了Firebase的滥用防护功能(部分场景可能需要主动申请开通),针对短信验证类请求开启智能拦截规则。
- 预校验手机号有效性:调用Firebase接口前,先在自定义后端过滤无效手机号——比如格式错误、虚拟运营商号段、明显的垃圾号,减少无效请求的发送量。
替代服务选项
如果以上方法都搞不定,考虑迁移到这些验证服务:
- Twilio Verify:自带完善的频率限制和反滥用机制,支持短信、语音验证,规则自定义灵活。
- Authy:专注多因素验证,API集成方便,防护策略成熟。
- Plivo Verify:全球手机号支持,内置反滥用功能,成本也比较可控。
内容的提问来源于stack exchange,提问作者Orange
相关产品推荐
相关产品推荐

