Правила не являются «безопасными» ни при каком нормальном определении этого слова. Вот что они позволяют. Любой, у кого есть соединение inte rnet, кто знает название проекта (которое легко получить) может:
- Запросить любой документ в базе данных
- Обновить любой существующий документ с любым значением числового значения c для
counter
в любом документе (оно даже не должно увеличиваться или быть положительным целым числом)
Кроме того, любой, кто может получить их токен Firebase Auth ID (опять же, не очень сложно для решительного злоумышленника), может полностью создать и записать любой документ в базе данных. Если вы говорите, что в вашем приложении вообще отсутствует Auth, то это не является проблемой, но если ваш проект настроен на разрешить любую форму аутентификации, злоумышленник может начать писать что угодно.
Вы получите электронное письмо от Firebase, в котором говорится, что ваши правила небезопасны, в основном потому, что вы позволяете всем читать все.
Что вам следует сделать, так это более конкретно определить, какова ваша безопасность требования, а затем перевести их в правила, которые действительно соответствуют этим требованиям. Если вы хотите разрешить доступ для записи без аутентификации в вашу базу данных любого рода, у вас возникнут некоторые проблемы, поскольку нет способа убедиться, что доступ действительно соответствует поведению загрузки, которое вы пытаетесь измерить. Вам лучше будет считать загрузки в любом процессе, который управляет загрузкой, что, вероятно, потребует более сложного бэкэнда, чем у вас сейчас.
Но если разрешить publi c доступ для чтения / записи - это на самом деле то, что вы хотите разрешить, вам будет лучше, если ваши правила будут более точными c. Например, вы можете ограничить, в какую коллекцию может писать анонимный пользователь, и быть уверенным, что он может только увеличивать счетчик, если это то, что вам нужно.