Как ограничить количество загрузок из Firebase Storage? - PullRequest
0 голосов
/ 04 января 2019

Насколько я вижу, в Firebase Storage нет правил безопасности, которые могли бы ограничить количество загрузок на пользователя.

Я могу ограничить размер файла или количество файлов для записи с помощью простого трюка, подобного этому:

  match /public/{userId}/{imageId} {
  allow write: if request.resource.size < 5 * 1024 * 1024 && 
  imageId.matches("[1-5]\.txt");
}

И в соответствии с Google Quotas & Limits :

Существует ограничение на обновление каждого объекта раз в секунду, поэтому быстрая запись в один объект не масштабируется.

Так что это здорово, но какпредотвратить слишком много чтений, если злонамеренному пользователю известна ссылка на скачивание? Это особенно важно для безопасности, как опять-таки согласно Квоты и ограничения Google :

ТамНет ограничений на чтение объекта.Сначала корзины поддерживают примерно 5000 операций чтения в секунду, а затем масштабируются по мере необходимости.

1 Ответ

0 голосов
/ 04 января 2019

Нет конфигурации для ограничения объема загрузок для файлов, хранящихся в облачном хранилище.Если у пользователя есть доступ для чтения каких-либо данных, он может читать их сколько угодно.Нет учета, связанного с количеством использованных пользовательских данных или количеством обращений к файлу.Не существует правила безопасности, которое позволяло бы вам ограничивать доступ таким способом.Нет триггеров Cloud Functions, которые позволили бы вам вести учет самостоятельно.

Документация по ограничениям на загрузку не связана с тем, что вы пытаетесь сделать.Ограничения на масштабируемость связаны только с производительностью базовой системы, а не с разрешениями конечных пользователей.

Если вы хотите ограничить возможности конечных пользователей, вам нужно будет направить их через некоторое промежуточное ПОКомпонент, который вы создаете, отслеживает, как они используют предоставленный API для загрузки файлов, и ограничивает их возможности в зависимости от их предыдущего поведения.Это, очевидно, нетривиально для реализации, но это возможно.

...