未配置Cloud Firestore安全规则,攻击者如何访问我的数据库及获取信息?
Cloud Firestore安全与google-services.json泄露相关问题解答
1. 未配置安全规则时,攻击者如何访问数据库?
如果你的Firestore安全规则是完全开放的(如下方示例):
service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read, write: if true; } } }
攻击者拿到google-services.json里的凭证后,能直接通过Firestore SDK或REST API对数据库进行无限制读写:
- 用获取到的API密钥、项目ID初始化Firestore客户端,遍历所有集合和文档,读取全部数据;
- 随意修改、删除现有数据,甚至插入恶意内容;
- 因为规则允许所有请求,不管请求来源是否经过身份验证,相当于数据库完全暴露在公网中。
这种开放规则仅适合开发测试,绝对不能用于生产环境。
2. 攻击者如何从google-services.json获取数据库相关信息?
google-services.json的project_info字段直接包含了关键的项目与数据库信息:
- 其中
project_id是Firebase项目的唯一标识,Firestore默认数据库的ID与项目ID绑定(默认数据库ID为(default)),攻击者拿到project_id后,就能定位到对应的Firestore数据库实例; - 同时,
api_key字段提供了调用Firebase API的合法凭证,结合project_id,攻击者可以构造出有效的API请求来访问数据库; - 另外,
storage_bucket等字段也能辅助攻击者确认项目的关联资源,进一步拓展攻击面。
简单来说,google-services.json里的核心字段足以让攻击者定位并访问你的Firestore数据库,尤其是在安全规则未正确配置的情况下。
内容的提问来源于stack exchange,提问作者Ghost
相关产品推荐
相关产品推荐

