从阅读全部收藏中消除,只允许几个文件?

时间:2019-10-17 02:48:02

标签: firebase google-cloud-firestore firebase-security

我们有一个包含许多文档的集合,这些文档是企业的“主要”数据源。

此集合具有一条阅读规则,该规则使其对所有人(无用户)开放打开,因为这是该集合的目的。

我想让任何人合理读取此集合中的文档,这意味着消除来自 查询此文档中所有文档的黑客 立即收集,以评估我的业务规模。

仍然让无用户(任何人/公共)一次查询多个文档(因为某些页面需要这样做,但是文档数量很少)

我找不到一个规则,可以让您在一个查询中 X个文档(例如40个)阻止查询。

2 个答案:

答案 0 :(得分:2)

请务必注意,弗兰克对request.query.limit进行检查的答案将限制单个查询的大小。但是,检查规则的限制并不会阻止黑客使用pagination来执行多个查询以获取集合的全部内容。它仅限制在查询中传递给limit()的值。

如果您需要对用户可执行的查询类型进行更多控制,则可以使用Cloud Functions HTTP function(或您控制的其他后端)来创建查询的API端点,并设置安全规则以防止所有直接访问集合。

答案 1 :(得分:1)

您正在寻找request.query.limit。从文档中:

// Limit documents per request to 50
allow list: if request.query.limit <= 50