Как обращаться с безопасностью веб-приложения Google Firebase? - PullRequest
2 голосов
/ 10 апреля 2020

Если я использую Firebase & Firestore с веб-приложением Angular, как я могу ограничить доступ к моим ресурсам Firebase, чтобы они не могли быть доступны извне моего Angular приложения?

Основной уязвимостью может быть то, что моя конфигурация Firebase представлена ​​в коде Angular. Я хочу исключить возможность того, что вредоносный разработчик воспользуется этой конфигурацией и разработает какое-нибудь приложение для бота или взлома.

1 Ответ

0 голосов
/ 14 апреля 2020

Возможно, вы захотите создать своего рода промежуточный слой (например, REST API), где конфигурация хранится только на вашем сервере. Таким образом, клиенты будут иметь доступ только к этому REST API, поэтому у вас нет шансов увидеть, что находится внутри вашей конфигурации!


В документации указано, что существует множество привязок Firebase для нескольких языков, таких как:

  • Java / Kotlin
  • Swift / Obj- C
  • C ++
  • JavaScript

Подробнее см. Здесь .


Кроме того, я думаю, что этот слой REST, который я создал, не выглядит неловким или необычным, поскольку здесь есть очень хорошая статья здесь на официальных документах.


Итак, в заключение лучше всего построить собственный REST API. Скорее всего, вы все равно будете получать уведомления на вашем сервере от Firebase, если, например, произойдет событие, однако уведомление о клиентах будет выполняться не Firebase, а вашим сервером (например, это может быть достигнуто с помощью WebSockets).

Это просто идеи, поэтому я не очень уверен. Возможно, Firebase все еще может уведомить ваших клиентов, и вам не понадобятся WebSockets.

На стороне фреймворка у вас есть много вариантов. Единственное, что действительно имеет значение, это то, что базовый язык фреймворка действительно является поддерживаемым языком многих реализаций Firebase (Java, JS, Kotlin, C ++, Swift, ...).

Я бы посоветовал вам взглянуть на приведенные ниже стандарты и рамки и выбрать тот, который вам больше нравится:

  • Node.js / Express. js
  • Spring Boot (или Spring MVC, если у вас нет автоматической настройки)
  • JAX-RS (стандарт JavaEE)

Редактировать: Однако

Я думаю, что создание REST API только для того, чтобы преодолеть возможные проблемы с безопасностью, кажется, что все делается дважды (создание ресурсов REST, просто для вызова другого API Google). Я не хочу советовать против Firebase, поскольку управляемая событиями архитектура очень актуальна, но если вы создаете API, то, вероятно, было бы более разумным создать собственный экземпляр базы данных (NoSQL for your case of a social network seems more appropriate). Но опять же, я только делюсь своими мыслями:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...