Советы по правилам Firebase - PullRequest
0 голосов
/ 18 апреля 2019

Я немного изменил свои правила Firestore для следующего кода ниже (требующий аутентификации пользователей для записи). Какие другие ограничения вы бы предложили ввести для защиты сайта?

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

1 Ответ

1 голос
/ 18 апреля 2019

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

Мой опыт таков.

Убедитесь, что вы предоставляете доступ только к данным на основе потребностей.

Итак, начните без доступа к чему-либо и явно добавьте доступ, когда это необходимо.Любые разработчики сообщат вам или сами решат, когда вам понадобится доступ, и затем вы сможете добавить его для этой коллекции.Делая это в обратном направлении, когда все, что читают или читают аутентифицированные пользователи, никогда не определит, когда вы предоставили слишком много разрешений.

Например, если коллекция используется облачной функцией и ничто иное, как доступ к чтениюне требуется.

Так что явно добавьте разрешения по коллекции, а не для всего.

Если доступ для чтения требуется пользователям, которые не прошли проверку подлинности, то добавьте чтение, но если это необходимо только проверенным пользователямпользователей, затем сделайте его

allow read:if request.auth != null;

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

allow read: if request.auth.uid == userId;

См.помощь по правилам пожарного депо] 1

Кроме того, правила также могут включать проверку данных.Это позволяет проверять длину, проверять значения и т. Д., А также разрешать ограничения, основанные на операции, выходящей за рамки простого чтения и записи.Например,

match /users/{userId} {
      allow read, update, delete: if request.auth.uid == userId;
      allow create: if request.auth.uid != null;
    }

и

allow read: if resource.data.userType == 'reader';

Есть несколько хороших видео на эту тему, например, это

Видео по использованию правила безопасности пожарного депо

...