You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Firestore修改规则后仍收到不安全规则告警如何解决

问题1解答

告警中提到的「他人可修改我的数据库」不局限于通过你的应用操作:你的Firebase项目的客户端配置本身就是公开在前端代码中的,任何人都可以抓取到配置后,直接调用Firebase官方SDK/API连接你的数据库,不需要经过你的应用前端逻辑校验。只要对方通过任意方式拿到了有效认证的UID(比如在你的应用正常注册登录获取),就能按照规则权限操作数据库。

问题2解答

按照你当前设置的规则,完全存在被认证用户批量删除全部数据库数据的可能:你的规则用/{document=**}匹配了全局所有文档路径,只要是有有效UID的认证用户,就拥有所有文档的写入权限(包含创建、修改、删除三类操作),恶意用户只需要写一段简单的脚本遍历所有集合、批量删除文档即可清空你的整库数据。


你修改规则后仍然收到告警的原因

你当前的规则仍然在Firebase的风险规则判定范围内,原因有两点:

  • 全局读权限allow read: if true意味着任何人不需要认证就能爬取你数据库的所有内容
  • 全局写权限只要认证就放行,没有任何操作范围、操作类型的限制,属于典型的宽松风险规则

另外注意你贴出的规则里match / databases / {database} / documents路径里多了多余空格,实际部署时需要删掉空格,否则规则不会正常生效。

适配你业务需求的规则优化方案

你的业务需求是「仅已认证用户可以读取和创建内容」,可以参考以下规则调整,调整后就不会再触发风险告警:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    // 替换为你实际的业务集合名,不要用全局通配符匹配所有文档
    match /content/{contentId} {
      // 仅认证用户可读取内容
      allow read: if request.auth != null;
      // 仅认证用户可创建内容,不允许修改、删除已有内容
      allow create: if request.auth != null;
      allow update, delete: if false;
      
      // 如果后续需要允许用户修改/删除自己发布的内容,可以把上面的update、delete规则替换为下面的
      // allow update, delete: if request.auth != null && resource.data.publisher_uid == request.auth.uid;
    }
    // 有其他业务集合时,按照同样逻辑逐个定义权限即可
  }
}

内容的提问来源于stack exchange,提问作者Un poco de todos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 09:27:03