# #security #web #google-cloud-firestore #authorization #firebase-security
Вопрос:
Есть ли способ ограничить Cloud Firestore (для хостинга/интернета) для выполнения операций CRUD с ограничениями, скажем, только для одного домена xyz.com
?
Например, приведенное ниже правило блокирует read, update, delete
без авторизации, но вы все равно write
можете подключиться к базе данных.
service cloud.firestore {
match /databases/{database}/documents {
match /coming-soon-email-ids/{document=**} {
allow write;
allow read, update, delete: if request.auth.uid == !null;
}
}
}
Или мне нужно интегрировать в него брандмауэр Google?
Комментарии:
1. зацени это blog.jimmycai.com/p/firebase-limit-access-to-certain-domains . Не совсем ограничение домена, но для входа в систему Google вы можете ограничить определенный домен для G suit
Ответ №1:
Правила безопасности Firebase не могут ограничить доступ к веб-домену. В самом общем смысле это невозможно, потому что Firestore предназначен для доступа к мобильным клиентам по всему миру с использованием Интернета, Android и iOS. Клиенты Android и iOS никогда не появляются из какого-либо домена. Они просто получают прямой доступ к базе данных через предоставленную клиентскую библиотеку или иногда через API REST Firestore. Веб-клиенты могут даже подделать свой кажущийся домен (который на самом деле доступен только с помощью небезопасного заголовка «Реферер» в HTTP-запросе).
Вы можете по-настоящему ограничить доступ только пользователям, вошедшим в ваше приложение или сайт с помощью аутентификации Firebase, но вы не можете ограничить, откуда они приходят.
Комментарии:
1. Хорошо, есть ли способ ограничить одно или несколько полей?
2. Я не знаю, о чем ты просишь. Это звучит как начало совершенно нового вопроса, не связанного с этим.
3. Если вы вошли в систему через Google (например, G suit) Я думаю, что мы просто проверяем домен электронной почты в правилах firestore
4. Не могу использовать apiKey для создания собственного приложения, которое указывает на ваш firestore, а затем также реализовать анонимный вход?
Ответ №2:
У меня был тот же вопрос, и я нашел решение. Вы можете выполнить вход анонимно:
const signIn = async () => {
auth.signInAnonymously()
.then(() => {
// Signed in..
})
.catch((error) => {
var errorCode = error.code;
var errorMessage = error.message;
// ...
});
Тогда вы можете сформулировать свои правила следующим образом:
allow read, write: if request.auth != null;
Затем при аутентификации вы можете активировать анонимный метод входа в систему и добавить свои авторизованные домены.
Комментарии:
1. Вы это проверяли? Я попытался анонимно аутентифицироваться с домена, не указанного в списке, и все еще могу получать данные из Firestore…
2. Я проверил это и использовал. Не забудьте добавить правила в правила firestore, а также добавить домен, который вы хотите разрешить
3. Мешает ли вам войти в систему анонимно с помощью определенной учетной записи?
4. Я думаю, что у вас могут быть обе системы