繁体   English   中英

限制读取以使用 collectionGroup(..) 的 Firestore 安全规则?

[英]Firestore security rule to limit reads to use collectionGroup(..)?

有几个问题涉及了解 Firestore uid 是否允许黑客编辑该人的数据,例如这个问题这个问题 我的问题是关于过滤用户何时可以读取他人数据的安全规则。

具体来说,我有一个社交媒体应用程序,允许人们匿名发布数据。 我的数据模型是/users/{user}/posts/{post} 我使用 db.collectionGroup("posts") 来建立一个帖子的时间线,(一些匿名的,其他人的名字)。

非匿名的帖子有一个有效的 uid,所以黑客要找出某人的 uid 并不难,我并不关心这一点。 我担心的是黑客是否可以查询usersRef.document(uid).posts.getDocuments(); 获取该用户的所有帖子,包括匿名帖子?

因为我的应用程序从用户的“帖子”集合构建时间线,所以我无法编写他们不能阅读其他用户帖子的规则。 我可以写一个规则,他们只能阅读带有 collectionGroup 的帖子吗?

以现在的结构方式,这是不可能的。 这是您编写规则以允许集合组查询的方式,如文档中所述

    match /{path=**}/posts/{post} {
      allow read: if ...condition...;
    }

path规则中的通配符明确允许所有读取名为“上岗”的所有集合。 该规则不会将读取限制为仅集合组查询 - 将允许对任何“帖子”进行任何正常的集合查询。

还要记住,与普通集合查询相比,集合组查询不会对调用者隐藏任何数据。 查询结果仍将包含对每个文档的完整路径的引用,其中包括路径中的文档 uid。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM