Firebase读取操作应配置哪些安全规则?开放全局读报不安全如何解决
问题根源
- 读权限范围超限:你当前使用
match /{document=**}全库通配符开启了公开读权限,无论后续是否新增存储敏感数据的集合,所有数据库内容都会默认对所有人开放,这是Firebase触发安全告警的核心原因。 - 写权限不符合业务要求:当前写规则仅校验用户是否登录,未做管理员身份限制,任意完成注册的普通用户都可以修改、删除你的演出数据,存在越权操作风险。
修复方案
你需要将公开读权限的范围缩小到仅开放演出数据对应的集合,同时补充管理员身份校验逻辑限制写权限,参考规则如下(需将示例中的集合名替换为你实际使用的名称):
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { // 假设你存储演出数据的集合名为 upcoming_performances match /upcoming_performances/{performanceId} { // 满足业务要求:所有用户可读取演出数据 allow read: if true; // 仅管理员可执行写操作,此处提供两种校验方案二选一即可 // 方案1:使用Firebase Auth自定义声明标记管理员(推荐) allow write: if request.auth != null && request.auth.token.is_admin == true; // 方案2:单独存储管理员UID集合校验,假设管理员集合名为admins,文档ID为管理员UID // allow write: if request.auth != null && exists(/databases/$(database)/documents/admins/$(request.auth.uid)); } // 其他所有集合默认禁止所有访问,后续新增集合按需单独配置权限即可 match /{document=**} { allow read, write: if false; } } }
规则更新完成后,Firebase会在1-3个工作日内重新扫描你的数据库安全配置,确认无风险后会自动停止推送告警邮件。
内容的提问来源于stack exchange,提问作者Posoroko
相关产品推荐
相关产品推荐

