Рекомендации по правилам Firebase

#firebase #google-cloud-firestore #firebase-security

# #firebase #google-cloud-firestore #firebase-безопасность

Вопрос:

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

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

Комментарии:

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

Ответ №1:

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

Мой опыт заключается в следующем.

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

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

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

Поэтому явно добавляйте разрешения по коллекции, а не для всего.

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

 allow read:if request.auth != null;
 

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

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

См. Справку firestore по правилам]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';
 

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

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