google-cloud-firestore - Firestore 安全规则限制读取以使用 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
通配符明确允许所有名为“posts”的集合的所有读取。该规则不会将读取限制为仅收集组查询 - 任何“帖子”上的任何正常收集查询都将被允许。
还要记住,与普通集合查询相比,集合组查询不会对调用者隐藏任何数据。查询结果仍将包含对每个文档的完整路径的引用,其中包括路径中的文档 uid。
推荐阅读
- javascript - Reactjs 无限滚动组件总是渲染新数据
- reactjs - 反应:TypeError:this.props.users.map 不是函数
- c# - 嗨,我正在尝试更改单元格值更改事件中 gridview 列的值,但每次发生时我都没有得到正确的输出
- java - 为什么即使计算正确,该方法仍返回 NaN?
- javascript - 用 axios 刮擦时身体丢失
- c++ - 主线程和线程池
- reactjs - useEffect redux 状态已更改,但未显示数据
- c# - 如何在 c# (Telegram bot) 中实现 register_next_step_handler?
- amazon-web-services - 活动项目的 DynamoDB TTL
- sql - SQL。如何选择具有所有需要条件的行