如何阻止同包名应用滥用google-services.json访问Firebase相关服务?
阻止Google Services JSON被盗用的解决方案
精准强化API密钥的限制规则
你之前设置的包名+签名指纹限制可能存在遗漏:要逐个检查Google Cloud控制台中每个关联Firebase服务(Crashlytics、App Distribution等)的API密钥,确保每个密钥都单独配置了完全匹配官方应用的包名+签名指纹组合,而非仅做统一的批量设置。部分Firebase服务会对应独立的API密钥,遗漏任何一个都可能导致未授权应用可盗用服务。修复Play Integrity App Check的配置问题
App Check未生效大概率是配置环节出错,按以下步骤排查:- 确认在Firebase控制台中,给Crashlytics、App Distribution等目标服务单独开启了App Check,并选择Play Integrity作为验证提供者。
- 检查应用的build.gradle配置,确保正确引入App Check依赖,且在应用启动时完成了App Check的初始化逻辑。
- 验证签名指纹:必须使用上传到Google Play的正式签名密钥指纹,而非本地调试指纹,尤其是测试发布版本时。
针对Crashlytics和App Distribution的专属限制
- Crashlytics:在Firebase控制台的Crashlytics设置中,开启「仅允许已注册应用发送崩溃报告」,确保官方应用是唯一注册项;同时强制开启App Check验证,拦截未授权应用的上报请求。
- App Distribution:严格限制测试人员的访问权限,仅允许指定邮箱账号下载应用;同时在Firebase控制台为该服务启用App Check,确保只有验证通过的应用才能访问分发接口。
优化google-services.json的存储方式
虽然无法完全隐藏该文件,但可以通过Gradle动态配置,将文件中的API密钥等敏感信息迁移到本地环境变量或加密配置文件中,避免在代码仓库或APK中明文暴露核心敏感字段。
内容的提问来源于stack exchange,提问作者sjor
相关产品推荐
相关产品推荐

