Catch up on everthing we announced at this year's Firebase Summit. Learn more

Включить проверку приложений с помощью проверки приложений на платформах Apple

На этой странице показано, как включить проверку приложений в приложении Apple с помощью встроенного поставщика проверки приложений. Когда вы включаете проверку приложений, вы гарантируете, что только ваше приложение может получить доступ к ресурсам Firebase вашего проекта. Обнаружили Обзор этой функции.

App Каталог использует App Attest , чтобы убедиться , что запросы на услуги Firebase поступают из вашего подлинного приложения. App Check в настоящее время не использует App Attest для анализа риска мошенничества .

Если вы хотите использовать App Проверьте с вашим собственным настраиваемым поставщика, см Внедрение персонализированного App Check поставщика .

1. Настройте проект Firebase.

  1. Для использования App Attest вам понадобится Xcode 12.5+.

  2. Добавить Firebase в свой проект Apple , если вы еще не сделали этого.

  3. Зарегистрировать приложение использовать App Check с провайдером App Attest в настройках проекта> App Check разделом консоли Firebase.

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

  4. Дополнительно: В настройках регистрации приложений, установить пользовательское время-жизнь (TTL) для App Check лексемы , выданный провайдером. Вы можете установить TTL на любое значение от 30 минут до 7 дней. При изменении этого значения помните о следующих компромиссах:

    • Безопасность: более короткие TTL обеспечивают более надежную безопасность, поскольку сокращают окно, в течение которого злоумышленник может злоупотребить просочившимся или перехваченным токеном.
    • Производительность: более короткие TTL означают, что ваше приложение будет чаще выполнять аттестацию. Поскольку процесс аттестации приложения увеличивает задержку для сетевых запросов каждый раз, когда он выполняется, короткий TTL может повлиять на производительность вашего приложения.
    • Квота и стоимость: более короткие TTL и частая повторная аттестация истощают вашу квоту быстрее, а платные услуги потенциально могут стоить дороже. См Квоты & пределы .

    По умолчанию TTL 1 часа является разумным для большинства приложений. Обратите внимание, что библиотека App Check обновляет токены примерно через половину времени TTL.

2. Добавьте в свое приложение библиотеку проверки приложений.

  1. Добавьте зависимость для App Check для вашего проекта Podfile :

    pod 'Firebase/AppCheck'

    Или, в качестве альтернативы, вы можете использовать Swift Package Manager вместо этого.

    Убедитесь, что вы также используете последнюю версию любых других SDK Firebase, от которых вы зависите.

  2. Запуск pod install и откройте созданный .xcworkspace файл.

  3. В Xcode, добавить возможность App Attest к вашему приложению.

  4. В вашем проекте .entitlements файл, установить среду App Attest для production .

3. Инициализировать проверку приложений.

Вам нужно будет инициализировать App Check, прежде чем использовать какие-либо другие SDK Firebase.

Во- первых, написать реализацию AppCheckProviderFactory . Специфика вашей реализации будет зависеть от вашего варианта использования.

Например, если у вас есть только пользователи на прошивке 14 и позже, вы можете просто всегда создавать AppAttestProvider объектов:

Быстрый

Примечание: Этот Firebase продукт не доступен по целям watchOS.

class YourSimpleAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
  func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
    return AppAttestProvider(app: app)
  }
}

Цель-C

Примечание: Этот Firebase продукт не доступен по целям watchOS.

@interface YourSimpleAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory>
@end

@implementation YourSimpleAppCheckProviderFactory

- (nullable id<FIRAppCheckProvider>)createProviderWithApp:(nonnull FIRApp *)app {
  return [[FIRAppAttestProvider alloc] initWithApp:app];
}

@end

Или, вы можете создать AppAttestProvider объектов на прошивке 14 и позже, и возвращаться к DeviceCheckProvider на более ранних версии:

Быстрый

Примечание: Этот Firebase продукт не доступен по целям watchOS.

class YourAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
  func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
    if #available(iOS 14.0, *) {
      return AppAttestProvider(app: app)
    } else {
      return DeviceCheckProvider(app: app)
    }
  }
}

Цель-C

Примечание: Этот Firebase продукт не доступен по целям watchOS.

@interface YourAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory>
@end

@implementation YourAppCheckProviderFactory

- (nullable id<FIRAppCheckProvider>)createProviderWithApp:(nonnull FIRApp *)app {
  if (@available(iOS 14.0, *)) {
    return [[FIRAppAttestProvider alloc] initWithApp:app];
  } else {
    return [[FIRDeviceCheckProvider alloc] initWithApp:app];
  }
}

@end

После того, как вы реализовали AppCheckProviderFactory класс, настроить приложение Check использовать его:

Быстрый

Примечание: Этот Firebase продукт не доступен по целям watchOS.

let providerFactory = YourAppCheckProviderFactory()
AppCheck.setAppCheckProviderFactory(providerFactory)

FirebaseApp.configure()

Цель-C

Примечание: Этот Firebase продукт не доступен по целям watchOS.

YourAppCheckProviderFactory *providerFactory =
        [[YourAppCheckProviderFactory alloc] init];
[FIRAppCheck setAppCheckProviderFactory:providerFactory];

[FIRApp configure];

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

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

5. Отслеживайте показатели запросов.

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

База данных в реальном времени, облачное хранилище и облачное хранилище

Важным инструментом, который вы можете использовать для принятия этого решения для Realtime Database, Cloud Firestore и Cloud Storage, является экран показателей запроса проверки приложений.

Для просмотра метрик Проверки запроса App для продукта, откройте Настройки проекта> App Проверьте раздел консоли Firebase. Например:

Скриншот страницы показателей проверки приложений

Показатели запросов для каждого продукта разбиты на четыре категории:

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

  • Устаревшие клиентские запросы являются те , которые отсутствуют в App Проверьте маркер. Эти запросы могут поступать из более старой версии Firebase SDK до того, как проверка приложений была включена в приложение.

  • Неизвестные запросы происхождения являются те , которые пропускают App Проверьте маркер, и не похожи они приходят из Firebase SDK. Это могут быть запросы, сделанные с использованием украденных ключей API, или поддельные запросы, сделанные без Firebase SDK.

  • Недействительные запросы являются те , которые имеют недопустимое App Проверьте маркер, который может быть от недостоверного клиента , пытающегося выдать себя за приложение, или из эмулируемых сред.

Распределение этих категорий для вашего приложения должно информировать вас, когда вы решите включить принудительное применение. Вот несколько рекомендаций:

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

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

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

Облачные функции

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

{
  "severity": "INFO",    // INFO, WARNING, or ERROR
  "logging.googleapis.com/labels": {"firebase-log-type": "callable-request-verification"},
  "jsonPayload": {
    "message": "Callable header verifications passed.",
    "verifications": {
      // ...
      "app": "MISSING",  // VALID, INVALID, or MISSING
    }
  }
}

Вы можете анализировать эти показатели в Google Cloud Console путем создавая журналы на основе счетчика метрики со следующей метрикой фильтра:

resource.type="cloud_function"
resource.labels.function_name="YOUR_CLOUD_FUNCTION"
resource.labels.region="us-central1"
labels.firebase-log-type="callable-request-verification"

Добавьте метрику , используя поле jsonPayload.verifications.appCheck .

6. Включите принудительное исполнение

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

База данных в реальном времени, Cloud Firestore и Cloud Storage

Чтобы включить принудительное применение для базы данных в реальном времени, Cloud Firestore (iOS и Android) и облачного хранилища:

  1. Откройте Проверка настроек проекта> App раздел консоли Firebase.

  2. Разверните представление показателей продукта, для которого вы хотите включить принудительное применение.

  3. Нажмите Принудительно и подтвердите свой выбор.

Обратите внимание, что после включения принудительного исполнения может пройти до 10 минут, прежде чем оно вступит в силу.

Облачные функции

См Включить App Проверка соблюдения для облачных функций .

Следующие шаги

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

См Используйте App Проверьте с провайдером отладки на Apple , платформах .