Выберите платформу: Android iOS JavaScript

Как защитить ключ API с помощью App Check

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

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

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

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

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

Чтобы интегрировать приложение с App Check, выполните следующие действия:

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

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

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

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

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

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

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

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

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

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

Как интегрировать в приложение проверку приложений

Требования

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

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

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

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

Шаг 3. Загрузите библиотеки Maps 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 Карт и App Check

  1. Инициализируйте App Check, используя конфигурацию, предоставленную консолью Firebase.
  2. Убедитесь, что запросы к Maps JavaScript API сопровождаются токенами App Check:
      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), создайте отладочную сборку приложения, в которой для получения действительных токенов App Check используется отладочный секрет. Это позволяет не использовать реальных поставщиков аттестации в отладочной сборке.

Чтобы протестировать приложение локально, выполните следующие действия:

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

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

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

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

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

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