Firebase Authentication中突然新增多个未知账户是什么原因?
问题原因分析
- 你打包在应用内的Firebase客户端配置本身不属于保密信息,不管是安卓/ios安装包反编译,还是web端直接查看前端源码,都能轻松提取到这段配置,不需要你主动对外分享就会被第三方获取。
- 默认情况下Firebase Authentication的邮箱密码注册接口没有访问权限限制,只要拿到你的项目配置就能调用,你遇到的情况就是爬虫批量扫到了你的配置,自动调用接口创建的垃圾账号。
上线后的不良影响
- 配额被占用产生额外成本:Firebase Auth的每月活跃用户额度、验证邮件/短信发送额度都会被垃圾账号消耗,超出免费配额后会直接产生额外账单,严重时还会触发服务熔断导致正常用户无法注册登录。
- 数据安全风险:如果你的Cloud Firestore、Realtime Database、Cloud Storage的安全规则默认允许所有登录用户读写,这些垃圾账号就能随意篡改、盗取你的数据,甚至向存储空间上传违规内容,你需要承担对应的管理责任。
- 运营数据失真:垃圾账号会完全打乱你的用户注册、活跃数据统计,后续无法基于真实数据做产品迭代决策。
修复建议
- 首先清理现有垃圾账号:你可以在Firebase控制台手动批量删除,也可以通过Firebase Admin SDK写脚本批量筛选删除非测试账号。
- 开发阶段临时管控:直接在Firebase控制台「Authentication」-「设置」中开启注册限制,或者临时关闭邮箱密码登录能力,仅在你需要测试的时候开启。
- 上线前的长效防护:
- 关闭客户端直接注册的权限,所有账号统一通过你的后端服务调用Firebase Admin SDK创建,从根源阻断非法注册入口。
- 注册流程增加自定义校验,比如添加邀请码校验,或者在Cloud Function中配置beforeCreate注册前置触发器,不符合校验规则的请求直接拦截。
- 收紧所有云资源的安全规则,不要使用
auth != null作为放行条件,必须细化到用户只能访问自身对应的资源,测试阶段可以单独给你的测试账号UID加白名单权限。

内容的提问来源于stack exchange,提问作者inter cretasyo
相关产品推荐
相关产品推荐

