#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';
На эту тему есть несколько хороших видеороликов, таких как этот