Используйте проверку приложений для защиты вашего ключа API (новинка)

Firebase App Check обеспечивает защиту вызовов из вашего приложения на платформу Google Maps, блокируя трафик, поступающий из источников, отличных от законных приложений. Это делается путем проверки токена от поставщика аттестации, такого как reCAPTCHA Enterprise . Интеграция ваших приложений с App Check помогает защитить их от вредоносных запросов, поэтому с вас не будет взиматься плата за несанкционированные вызовы API.

Подходит ли мне App Check?

Проверка приложений рекомендуется в большинстве случаев, однако проверка приложений не требуется или не поддерживается в следующих случаях:

  • Частные или экспериментальные приложения. Если ваше приложение не является общедоступным, проверка приложений не требуется.
  • Если ваше приложение используется только между серверами, проверка приложений не требуется. Однако если сервер, который взаимодействует с GMP, используется общедоступными клиентами (например, мобильными приложениями), рассмотрите возможность использования проверки приложений для защиты этого сервера вместо GMP.

Обзор этапов реализации

В общих чертах, это шаги, которые вы должны выполнить, чтобы интегрировать свое приложение с App Check:

  1. Добавьте Firebase в свое приложение.
  2. Добавьте и инициализируйте библиотеку проверки приложений.
  3. Добавьте поставщика токенов в свое приложение.
  4. Инициализируйте API Maps JS и App Check.
  5. Включите отладку.
  6. Отслеживайте запросы приложений и принимайте решения о принудительном исполнении.

После интеграции с App Check вы сможете видеть показатели внутреннего трафика на консоли Firebase. Эти метрики обеспечивают разбивку запросов по тому, сопровождаются ли они действительным токеном проверки приложений. Дополнительную информацию см. в документации Firebase App Check .

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

Что следует учитывать при планировании интеграции App Check

Вот некоторые вещи, которые следует учитывать при планировании интеграции:

  • ReCAPTCHA Enterprise, один из рекомендуемых нами поставщиков аттестации, взимает плату за более чем 10 000 оценок в месяц.

    Другой поставщик аттестации, который мы рекомендуем, reCAPTCHA v3, имеет квоту, после которой трафик не будет оцениваться.

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

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

    Время, в течение которого токен проверки приложения действителен ( время жизни или TTL), определяет частоту повторных аттестаций. Эту продолжительность можно настроить в консоли Firebase. Повторная аттестация происходит по истечении примерно половины TTL. Дополнительную информацию см. в документации Firebase вашего провайдера аттестации.

Интегрируйте свое приложение с App Check

Предпосылки и требования

Шаг 1. Добавьте Firebase в свое приложение

Следуйте инструкциям в документации для разработчиков Firebase , чтобы добавить Firebase в свое приложение.

Шаг 2. Добавьте библиотеку проверки приложений и инициализируйте проверку приложений.

Firebase предоставляет инструкции для каждого поставщика аттестации по умолчанию. В этих инструкциях показано, как настроить проект Firebase и добавить библиотеку App Check в ваше приложение. Следуйте предоставленным примерам кода для инициализации проверки приложений.

Шаг 3. Загрузите библиотеки JS API Карт.

  1. Загрузите ядро ​​и библиотеки Maps, как показано в следующем фрагменте. Дополнительную информацию и инструкции см. в документации Maps JavaScript API .

    async function init() {
      const {Settings} = await google.maps.importLibrary('core');
      const {Map} = await google.maps.importLibrary('maps');
    }  

Шаг 4. Инициализация API Карт и проверки приложений

  1. Инициализируйте проверку приложений, используя конфигурацию, предоставленную консолью Firebase.
  2. Убедитесь, что запросы к Maps JS API сопровождаются токенами проверки приложений:
      import {initializeApp} from 'firebase/app';
      import {
        getToken,
        initializeAppCheck,
        ReCaptchaEnterpriseProvider,
      } from 'firebase/app-check';
        
      async function init() {
        const {Settings} = await google.maps.importLibrary('core');
        const {Map} = await google.maps.importLibrary('maps');
      
        const app = initializeApp({
          // Your firebase configuration object
        });
      
        // Pass your reCAPTCHA Enterprise site key to initializeAppCheck().
        const appCheck = initializeAppCheck(app, {
          provider: new ReCaptchaEnterpriseProvider(
            'abcdefghijklmnopqrstuvwxy-1234567890abcd',
          ),
      
          // Optional argument. If true, the SDK automatically refreshes App Check
          // tokens as needed.
          isTokenAutoRefreshEnabled: true,
        });
      
        Settings.getInstance().fetchAppCheckToken = () =>
            getToken(appCheck, /* forceRefresh = */ false);
      
        // Load a map
        map = new Map(document.getElementById("map"), {
          center: { lat: 37.4161493, lng: -122.0812166 },
          zoom: 8,
        });
      }  
      

Шаг 5. Включите отладку (необязательно)

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

Чтобы протестировать приложение локально:

  • Активируйте поставщика отладки в целях разработки.
  • Вы получите автоматически сгенерированный случайный UUID4 (называемый _debug token_ в документации App Check) из журналов отладки SDK. Добавьте этот токен в консоль Firebase.
  • Дополнительную информацию и инструкции см. в документации App Check .

Чтобы запустить приложение в среде CI:

  • Создайте случайный UUID4 из консоли Firebase.
  • Добавьте UUID4 в качестве токена отладки, а затем скопируйте его в секретное хранилище, к которому тесты CI будут иметь доступ при каждом запуске теста.
  • Дополнительную информацию и инструкции см. в документации App Check .

Шаг 6. Отслеживайте запросы приложений и принимайте решения о принудительном исполнении.

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

Дополнительную информацию и инструкции см. в документации Firebase App Check .