如何解决配置匿名认证和安全规则后仍收到Firebase数据库安全告警的问题
Firebase匿名认证后仍收到安全告警的解决方案
你当前配置的规则仍然触发告警的核心原因是:匿名认证的获取门槛极低,恶意人员可以反编译你的App拿到Firebase配置信息,批量调用匿名登录接口获取合法uid,进而拉走你全库的词汇数据,Firebase判定全局开放读权限的规则存在数据泄露风险,所以会持续推送安全提示。
你可以按以下步骤优化:
- 收紧读权限范围,不要给根目录全局读权限,仅开放你实际需要用到的业务节点的读权限,避免无关节点暴露。假设你的词汇数据都存在
vocabulary节点下,可参考如下规则修改:
{ "rules": { "vocabulary": { ".read": "auth.uid != null", // 按需配置索引字段,避免恶意全表扫描 ".indexOn": ["category", "difficulty"] }, ".write": false } }
- 增加查询限制,防止全量数据被爬取。可以在规则中限制单次查询的最大返回条数,比如单次最多返回50条:
{ "rules": { "vocabulary": { ".read": "auth.uid != null && query.limitToFirst <= 50", ".indexOn": ["category", "difficulty"] }, ".write": false } }
- 开启Firebase App Check功能,该功能不需要用户做任何登录操作,只会校验请求是否来自你官方发布的正版App,反编译的山寨应用无法拿到合法的App Check令牌,直接拦截恶意请求。开启后更新规则增加App Check校验:
{ "rules": { "vocabulary": { ".read": "auth.uid != null && request.appCheck.valid == true", ".indexOn": ["category", "difficulty"] }, ".write": false } }
- 定期清理Firebase控制台中长期未活跃的匿名认证用户,减少身份被滥用的风险。
完成上述配置后,通常24小时内安全告警就会自动消失。
内容的提问来源于stack exchange,提问作者SoF
相关产品推荐
相关产品推荐

