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

Как защитить ключ API с помощью Проверки приложений

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

Подходит ли мне Проверка приложений?

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

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

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

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

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

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

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

Что нужно учитывать при планировании интеграции с Проверкой приложений

При планировании интеграции необходимо учитывать следующее:

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

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

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

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

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

Интегрируйте приложение с Проверкой приложений

Требования

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

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

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

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

Шаг 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. Инициализируйте Maps API и App Check 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. Включите отладку (необязательно)

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

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

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

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

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

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

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

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