Firebase — база данных в реальном времени — правила и аутентификация

#firebase #flutter #firebase-realtime-database #firebase-authentication #flutter-web

#firebase #flutter #firebase-база данных в реальном времени #firebase-аутентификация #flutter-web

Вопрос:

  1. Я разрабатываю веб-приложение, чтобы иметь возможность проводить онлайн-опрос.
  2. Я развернул веб-приложение Flutter на хостинге Firebase, и база данных приложения находится в Firebase realtime db.
  3. Поскольку любой может отправить ответ, я действительно не хочу настраивать систему аутентификации на основе OAuth.
  4. Однако я также не хочу, чтобы мои API были открыты для всех, поскольку это создает угрозу безопасности.

Вот как выглядят заголовки моих запросов (на данный момент) —

 Map<String, String> requestHeaders = {
       'Content-type': 'application/json',
       'Accept': 'application/json',
     };
 

Вот как выглядят правила БД в реальном времени —

 {
  "rules": {
    ".read": true,
    ".write": true,
    
  }
}
 

Теперь вопрос в том, как я могу убедиться, что мои API не доступны всем, пока я все еще могу использовать их в своем приложении (которое работает без авторизации пользователя).

Кроме того, я хочу убедиться, что Firebase db, по крайней мере, проверяет, поступает ли запрос из моего развернутого веб-приложения, и только тогда он позволяет ему использовать API. Если кто-то обращается к этим API напрямую (извне приложения, в браузере, они просто не должны работать).

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

Ваша помощь будет высоко оценена!

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

1. Если вы не хотите отслеживать пользователей, вам может помочь анонимный вход. Вам просто нужно настроить его таким образом, чтобы со стороны пользователей требовалось минимум усилий, а затем вы можете изменить свои правила безопасности, чтобы разрешить чтение и запись, если пользователь аутентифицирован. А для проверки правильности запроса вы можете использовать App check функцию, которая все еще находится в бета-версии, но работает нормально!

2. Привет! Я вроде как новичок в firebase. Можете ли вы предложить хорошую статью о том, как я могу этого добиться? и, допустим, я отправляю некоторый жестко закодированный токен аутентификации внутри по заголовкам запроса. Есть ли у меня способ проверить это в правилах базы данных в реальном времени? Это, по крайней мере, гарантировало бы, что запрос get / post поступает из приложения, поскольку это был бы единственный способ для заголовка запроса содержать этот токен. Возможно ли это?

3. Чтобы начать работу с анонимной аутентификацией: firebase.google.com/docs/auth/web/anonymous-auth . Чтобы начать работу с проверкой приложения: firebase.google.com/docs/app-check