Исключить из чтения ВСЕ коллекции, разрешить только несколько документов? - PullRequest
0 голосов
/ 17 октября 2019

У нас есть коллекция со многими документами, которая является «основным» источником данных для бизнеса.

В этой коллекции есть правило чтения, которое делает ее открытой для всех (нет пользователей)потому что это и есть цель этой коллекции.

Я бы хотел, чтобы кто-нибудь разумно прочитал документы в этой коллекции, что означает исключение хакера из запрос ко ВСЕМ документам в этой коллекции за один раз только для оценки размера моего бизнеса.

Тем не менее, позвольте ни одного пользователя (любой / публичный)запросить несколько документов одновременно (поскольку некоторые страницы требуют этого, но это очень небольшое количество документов)

Я не могу найти правило, позволяющее блокировать запрос для более чем X документов (скажем, 40) в одном запросе.

Ответы [ 2 ]

2 голосов
/ 17 октября 2019

Важно отметить, что ответ Фрэнка на проверку request.query.limit ограничит размер одного запроса. Однако проверка ограничения в правилах не мешает хакеру выполнить несколько запросов, используя pagination , чтобы получить все содержимое коллекции. Это только ограничивает значение, переданное в запросе limit().

Если вам нужен больший контроль над типами запросов, которые могут выполнять пользователи, вы можете использовать Функция HTTP Cloud Functions (илинекоторый другой сервер, которым вы управляете), чтобы создать конечную точку API для запроса и установить правила безопасности, чтобы запретить прямой доступ к коллекции.

1 голос
/ 17 октября 2019

Вы ищете request.query.limit. Из документации:

// Limit documents per request to 50
allow list: if request.query.limit <= 50
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...