# #firebase #authentication #google-cloud-firestore #firebase-authentication #firebase-security
#огневая база #идентификация #google-облако-firestore #firebase-аутентификация #огневая база-безопасность
Вопрос:
Представьте, что существует база данных Firestore, которая используется как 1 — статическим клиентским интерфейсом, так и 2-node.js сервер.
По сути, только a domain
и an ip address
могут использовать эту базу данных, которая работает довольно хорошо.
Самая сложная часть:
- мы хотим, чтобы у нас была node.js сервер для чтения/записи всей базы данных
- но веб-клиенту должно быть разрешено только чтение/запись в одной и той же базе данных, если пользователь аутентифицирован.
Проблема в том, что с rules
его помощью невозможно внести наших в белый ip address
список .
Поэтому мы попытались использовать это:
service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read, write: if request.auth != null; } }
Затем в node.js сервер может signInAnonymously
, в то время как интерфейсный клиент должен аутентифицировать пользователя перед доступом к любому содержимому.
Мой вопрос
Достаточно ли безопасна подпись под именем? Потому anonymous auth
что включено, возможно ли, чтобы кто signInAnonymously
-то из нашего интерфейса? Возможно ли, чтобы кто-то подделал какой-то заголовок и притворился нашим доменом только для того, чтобы аутентифицироваться как анонимный?
Какой была бы наилучшая практика в подобном случае?
Ответ №1:
Может быть, я смогу объяснить это в двух частях,
- Во-первых, нет необходимости кому-то подделывать какой-то заголовок и притворяться вашим доменом. Причина в том, что если кто-то может войти в систему как анонимный с вашего домена напрямую, он сможет получить доступ ко всей информации, доступ к которой вы ему разрешили
- Во-вторых, и это самое важное, я думаю, что вы неправильно получили доступ на стороне сервера NodeJS к firebase. Если вы хотите получить доступ ко всей базе данных из службы узлов, используйте Firebase admin SDK, и вам не нужно выполнять какую-либо проверку подлинности для чтения и записи при подключении из firebase admin SDK, так как у вас есть доступ администратора.
- К вашему сведению, вы также можете внести свой IP-адрес аутентификации в белый список в настройках аутентификации, где вы можете разрешить домены из белого списка