几个问题解决了是否知道Firestore uid是否允许黑客编辑该人的数据,例如this question和this question。我的问题是关于安全规则,以便用户可以读取其他人的数据时进行过滤。
具体来说,我有一个社交媒体应用程序,允许人们匿名发布数据。我的数据模型是/users/{user}/posts/{post}
。我使用db.collectionGroup(“ posts”)来构建帖子的时间轴(有些匿名,有些带有用户名)。
非匿名的帖子具有有效的uid,因此对于黑客来说,找出某人的uid并不困难,而我并不担心。我担心的是,黑客是否可以随后查询usersRef.document(uid).posts.getDocuments();
来获取该用户的所有帖子,包括匿名帖子?
因为我的应用根据用户的“帖子”集合构建时间表,所以我无法编写规则,使他们无法阅读其他用户的帖子。我可以写一个规则,让他们只能阅读具有collectionGroup的帖子吗?
答案 0 :(得分:2)
现在事情的结构不可能实现。如documentation
中所述,这是您编写允许集合组查询的规则的方式 match /{path=**}/posts/{post} {
allow read: if ...condition...;
}
规则中的path
通配符明确允许 all 读取名为
还请记住,与普通的集合查询相比,集合组查询不会向调用者隐藏任何数据。查询结果仍将包含对每个文档的完整路径的引用,该路径在路径中包括文档uid。