Firestore publi c правила сбора - PullRequest
0 голосов
/ 06 марта 2020

У меня есть веб-приложение, которое в основном представляет собой список опубликованных c элементов, пользователи, не прошедшие проверку подлинности, могут выполнять поиск в базе данных и выводить результаты поиска из коллекции. Пока я не начал ежедневно получать электронные письма от Firebase о «небезопасных правилах в моей Firestore базе данных», я думал, что все в порядке, но теперь я сомневаюсь в них.

Вот мои правила:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
     allow read: if true;
     allow write: if request.auth.uid !=null;
    }
  }
}

Я новичок в Firebase/Firestore и пытаюсь понять:

1- Данные предназначены для публикации c, но при получении писем от Firebase эти правила на самом деле проблема?

2- Хотя данные предназначены для публикации c, было бы плохо, если бы кто-то просто зашел и загрузил всю коллекцию за один go. Таким образом, возможно ли немного ограничить доступ publi c, каким-то образом запретив доступ к коллекциям / документам, если запрос не поступает из веб-приложения / домена? Может быть, какая-то форма токена? Или какой-то другой подход?

1 Ответ

2 голосов
/ 06 марта 2020

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

Глобальный рекурсивный подстановочный знак /{document=**} является опасным, поскольку он может применяться к данным, которые вы не собирались читать или записывать. Вместо этого вы должны вызывать указанные c имена коллекций в отдельных правилах. Таким образом, если вы создаете новые коллекции, они не будут автоматически включаться с подстановочным знаком.

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

...