Ограничение ключей API Firebase

Я играл с Firebase, и после прочтения документации (и других вопросов SO) я все еще не понимаю некоторые ключи API. Я использую Firebase для аналитики, сбоев и производительности. Но также свяжите его с Google Play и AdMob.

Когда я настраивал его впервые, в консоли разработчика было создано 3 ключа API.

  1. Ключ браузера (автоматически создается службой Google)
  2. Ключ Android (автоматически создается службой Google)
  3. Ключ сервера (автоматически создается службой Google)

Я попытался прочитать документацию, чтобы найти, где описано, как используются эти ключи, но мне не удалось его найти. При осмотре приложения Firebase кажется, что Android Key используется как Web API Key, а Server Key используется как Cloud Message Legacy Server Key (хотя я не использую Cloud Messaging). Я не уверен, как Firebase использует Browser Key.

Я пытаюсь максимально ограничить эти ключи, чтобы предотвратить их злонамеренное использование.

Я добавил следующие ограничения API

  1. Android Key
    • Firebase Services API
  2. Server Key
    • Firebase Cloud Messaging API
  3. Browser Key
    • Firebase Services API

Я не совсем уверен, верны ли эти ограничения для того, для чего я их использую, но это сработало для Android Key и Server Key, по крайней мере, насколько я могу судить. Однако ограничения Browser Key, похоже, не работают, поскольку Firebase создает новый Browser Key, когда я повторно развертываю свое приложение.

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


person Spark323    schedule 11.08.2018    source источник
comment
Мне интересно то же самое. Firebase, кажется, автоматически создает эти ключи, и если я их изменю, они будут созданы заново. Мне не нравится, что эти ключи, кажется, находятся вне моего контроля.   -  person devlop    schedule 25.09.2018
comment
Тот же вопрос здесь. Мне также интересно, почему они генерируют неограниченные ключи api, кажется немного преувеличенным.   -  person Tomas Jansson    schedule 07.01.2019
comment
Вы когда-нибудь придумали ответ на свой вопрос?   -  person ahong    schedule 23.10.2020
comment
Я также заметил, что некоторые из этих ключей api отображаются в файле google-services.json. Я не знаю, находится ли этот файл в скомпилированном приложении или нет, но в этом случае это было бы поводом для беспокойства.   -  person josue.0    schedule 21.01.2021
comment
Я обнаружил, что ключи в этом файле json скомпилированы в apk как ресурсы: groups.google.com/g/firebase-talk/c/bamCgTDajkw/m/uVEJXjtiBwAJ   -  person josue.0    schedule 21.01.2021
comment
Просто продолжение, вы нашли ответ?   -  person josue.0    schedule 06.05.2021
comment
@ josue.0 вне комментариев здесь нет.   -  person Spark323    schedule 19.05.2021


Ответы (2)


Существуют ограничения приложений, в которых вы можете ограничивать: HTTP-источники перехода, IP-адреса, приложения для Android, приложения для iOS. И это единственные, которые, кажется, работают

Я обнаружил, что лучше не ограничивать вызовы API автоматически сгенерированными ключами API Firebase. Я пробовал ограничения API для Firebase Web API Key, но изменения нарушают работу других компонентов.

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

https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key=THE 1NOW1RESTRICTED1API1KEY
{
  "error": {
    "code": 400,
    "message": "EMAIL_NOT_FOUND",
    "errors": [
      {
        "message": "EMAIL_NOT_FOUND",
        "domain": "global",
        "reason": "invalid"
      }
    ]
  }
}
person SAGB    schedule 12.05.2019

Ключ Android можно привязать к «Приложениям Android», указав имя пакета и отпечаток SHA1.

Кажется, это ограничит использование ключа подписанным кодом Android?

Я включил это ограничение без каких-либо нежелательных побочных эффектов.

person majway27    schedule 13.05.2020