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

Firestore安全规则疑问:用户能否修改他人集合中含自身ID的文档?

Firestore规则问题解答

核心结论

你当前设置的规则完全开放了权限,userB可以随意修改userA的friendsCollection中ID为userB的文档,因为规则里的if true没有做任何身份校验,所有用户都能读写users路径下的所有资源。

实现需求的正确规则

如果你想达到「仅允许用户修改父级{userDocID}属于自身的内容」,也就是用户只能操作自己账号对应的users文档下的子集合数据,需要调整规则如下:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    // 匹配users下的根文档
    match /users/{userDocID} {
      // 用户只能读写自己的根文档
      allow read, write: if request.auth.uid == userDocID;
      
      // 匹配friendsCollection下的所有文档
      match /friendsCollection/{friendDocID} {
        // 仅允许文档所属用户(userDocID)操作该子集合下的所有好友记录
        allow read, write, delete: if request.auth.uid == userDocID;
      }
      
      // 匹配notificationsCollection下的所有文档
      match /notificationsCollection/{notifDocID} {
        // 仅允许文档所属用户(userDocID)操作自己的通知记录
        allow read, write, delete: if request.auth.uid == userDocID;
      }
    }
  }
}

规则说明

  • 上述规则中,只有当请求用户的UID等于userDocID时,才能操作该userDocID对应的文档及其子集合内容
  • 按照这个规则,userB只能操作users/userB路径下的所有资源,无法修改users/userA/friendsCollection/userB的内容,符合你的预期

内容的提问来源于stack exchange,提问作者whatwhatwhat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 10:42:04