Есть ли способ защитить облачные функции Firebase, вызываемые от злоумышленников без аутентификации пользователя? - PullRequest
0 голосов
/ 07 апреля 2020

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

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

До сих пор я думал о создании собственного «секретного ключа» для передачи в качестве параметра в моем запросе, и это единственное решение, которое я нашел по этому вопросу, но я знаю, что это не настоящая защита, поскольку насколько вы можете видеть тело запроса в консоли. Единственными другими решениями, которые я нашел в Интернете, было бы обеспечить аутентификацию пользователей для проверки их токенов, но я не хочу заставлять их входить в систему, чтобы использовать мой веб-сайт.

Я немного разочарован тем, что не существует четких способов идентифицировать мое приложение как доверенное через экосистему Firebase ... Если у вас есть какие-либо подсказки, это будет очень полезно.

1 Ответ

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

Невозможно полностью защитить функцию HTTP, вызываемую только из вашего приложения. Вот почему:

  1. Клиентские устройства должны рассматриваться как скомпрометированные и находящиеся под полным контролем злоумышленника. Таким образом, вы не можете доверять любому коду на них, даже если он поставляется с вашим собственным приложением.
  2. Если вы не можете доверять коду, то не можете доверять любой информации удерживается в памяти этим кодом.
  3. Если вы не можете доверять тому, что находится в памяти, то вы не можете доверять всему, что передано вашему бэкэнду. Это означает, что у вас действительно нет никакой возможности защитить его от злонамеренного использования.

Облачные функции здесь не предлагают никаких решений, потому что нет 100% пуленепробиваемых решений, которые можно развернуть с помощью кода приложения. который сидит на устройстве пользователя. То, что вы делаете сейчас, может быть «достаточно хорошим», чтобы предотвратить случайный взлом, но имейте в виду, что любой может получить этот токен с целью подделки вызовов, и вы никогда не узнаете, что это происходит.

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

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