Хобрук: Ваш путь к мастерству в программировании

Добавить ограничение на чтение данных firebase firestore

У нас есть приложение для iOS, использующее Firestore. Приложение только читает данные (без записи), у нас нет учетных записей пользователей, и ничто в базе данных не должно быть защищено. По этой причине мы использовали эти наивные правила безопасности.

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
       allow read;
    }
  }
}

Однако Firebase предупредила нас (конечно, по уважительным причинам), что это подвергает нас риску по двум причинам:

  1. Любой пользователь может читать что угодно из базы данных, поэтому нет ничего безопасного.

Я не вижу в этом проблемы, потому что у нас нет ничего, что нужно держать в секрете. По крайней мере, сейчас, конечно, это может измениться.

  1. Разрешено неограниченное чтение

Это была проблема. Я предполагаю, что злоумышленник мог прочитать нашу базу данных миллионы раз и тем самым закрыть нас или просто заставить нас заплатить большой счет (мы используем план Blaze, платите по мере использования).

Как мы можем защитить себя от этого? Я видел здесь похожие вопросы, но они не дают никаких полезных предложений, Как ограничить скорость чтения данных из Firebase?

Моя идея состоит в том, что мы могли бы использовать анонимные учетные записи пользователей в приложении, а затем в наших правилах безопасности разрешать чтение только в том случае, если пользователь «вошел в систему» ​​(таким образом, любой, кто использует приложение). Я далек от эксперта по Firebase и вопросам безопасности, но разве это не усложнит или сделает невозможным чтение нашей базы данных миллионы раз, потому что это нужно делать через приложение?

Есть ли другие предложения, как мы можем подойти к этому?

Предупреждение Firebase о плохих правилах безопасности


Ответы:


1

На самом деле нет способа ограничить скорость чтения для конкретного клиентского приложения после того, как вы разрешите доступ для чтения к документу. Благодаря полностью общедоступным правилам чтения каждый в Интернете может многократно читать документы, чтобы оплачивать счета. Однако шансы на то, что это произойдет, действительно невелики, и вы должны сообщать о том, что кажется оскорбительным, в Firebase. поддержка.

Вы можете избавиться от предупреждающего сообщения, вызвав отдельную коллекцию верхнего уровня, которую клиенты должны иметь возможность читать. Поскольку Firebase не знает, к каким коллекциям вы можете разрешить или запретить доступ, вы должны быть явным. Например, примерно так для каждой коллекции:

    match /collection1/{document=**} {
       allow read;
    }
    match /collection2/{document=**} {
       allow read;
    }

Если вы это сделаете, обязательно удалите имеющееся у вас правило, разрешающее доступ ко всем документам.

17.12.2019

2

Если это просто операция только для чтения, вы можете рассмотреть возможность использования удаленной конфигурации, поскольку удаленная конфигурация совершенно бесплатно. Но если для вашего сценария необходимо использовать базу данных firestore, рассмотрите возможность входа в Firebase Anonymous и установки следующего правила безопасности

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /collection_name/{documentId} {
      allow read: if request.auth.uid != null;
      allow write: if false;
    }
  }
}
17.12.2019
Новые материалы

Как симулировать серию пенальти на Python с помощью симуляции Монте-Карло, часть 1: генерация функций
Серия пенальти была огромным испытанием во время чемпионата мира по футболу. Они вызвали много споров в социальных сетях и новостных агентствах. Даже финальный матч турнира решался по..

AST для разработчиков JavaScript
TL; DR Эта статья - мое выступление на недавно состоявшейся конференции Stockholm ReactJS Meetup. Вы можете посмотреть слайды здесь..

5 проектов на Python, которые нужно создать прямо сейчас!
Добро пожаловать! Python — один из моих любимых языков программирования. Если вы новичок в этом языке, перейдите по ссылке ниже, чтобы узнать о нем больше:

Dall-E 2: недавние исследования показывают недостатки в искусстве, созданном искусственным интеллектом
DALL-E 2 — это всеобщее внимание в индустрии искусственного интеллекта. Люди в списке ожидания пытаются заполучить продукт. Что это означает для развития креативной индустрии? О применении ИИ в..

«Очень простой» эволюционный подход к обучению с подкреплением
В прошлом семестре я посетил лекцию по обучению с подкреплением (RL) в моем университете. Честно говоря, я присоединился к нему официально, но я редко ходил на лекции, потому что в целом я нахожу..

Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

Фишинг — Упаковано и зашифровано
Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..