firebase安全规则可以用于传递正确的数据吗?还是仅用于恶意用户



想象一下,如果我想请求两个用户ID(user1user2(进行聊天(文档(。

聊天文档包含一个带有参与者ID的数组,因此users1和users2都在参与者数组中。

如果我请求participant数组中包含user1user2的所有内容,我可能也会获得user1与其他用户的聊天,而不仅仅是user1与user2的聊天。

示例代码:

ref.where('participantsIds', 'array-contains-any', [u1.id , u2.id])

现在想象一下,我添加了一个安全规则,只有当发出请求的用户在参与者数组中时,才允许进行聊天。

例如:

allow read, write: if request.auth!=null && request.auth.uid in resource.data.participantsId

这是一种糟糕的做法吗?我可以使用规则来控制应用程序的每个实例的数据行为吗

无论结果是真是假,规则都可能会给请求增加几毫秒(甚至不是?(。

是的,我知道这会影响成本和申请配额。

谢谢!!

Firebase安全规则不是过滤器。他们无法更改将从查询返回的数据。他们所做的只是阻止人们根据你提供的逻辑访问数据。

如果应用上面显示的规则,那么用户请求其uid不在participantsId中的任何文档的任何查询,或者用户在participantsId上进行的查询不使用其uid作为必需的筛选器,那么查询将失败。这是你应该很容易就能自己观察到的东西。

我建议阅读:Firestore安全规则不是过滤器意味着什么?

最新更新