Разработка
Firebase App Check с Play Integrity API в Android
Firebase App Check не только прост в настройке, но и чрезвычайно эффективен для защиты вашего приложения и бэкэнда.
Когда мы создаём Android-приложение с использованием Firebase, мы думаем, что только наше реальное приложение будет взаимодействовать с сервисами Firebase, такими как Firestore, Realtime Database или Cloud Storage. Но в реальности любой может извлечь ваши ключи Firebase и попытаться получить доступ к вашему бэкэнду, используя поддельные или модифицированные приложения.
Вот тут-то и пригодится Firebase App Check.
В этом блоге мы рассмотрим:
- Что такое Firebase App Check?
- Как работает App Check?
- Как интегрировать App Check в Android-приложение?
- Срок действия токена App Check
- Распространённые проблемы, которые могут нарушить работу Firebase App Check
- Использование App Check во время разработки и отладки
- Метрики запросов App Check
- Как это работает с сервисами Firebase: демонстрационный пример использования
Что такое Firebase App Check?
Firebase App Check — это уровень безопасности, который гарантирует, что доступ к сервисам Firebase будет иметь только ваше реальное, неизменённое приложение.
Без проверки приложений:
- Поддельные или клонированные приложения могут напрямую получать доступ к вашему Firestore
- Автоматизированные скрипты могут злоупотреблять вашими API
- Ваша квота Firebase может быть исчерпана
- Ваши расходы на оплату могут неожиданно возрасти
С проверкой приложений:
- Firebase проверяет ваше приложение перед ответом на запросы
- Доступ разрешен только доверенным и действительным приложениям
- Измененные, поддельные или несанкционированные приложения автоматически блокируются
- Ваши данные, квота и платежи остаются защищенными
Представьте App Check как удостоверение личности, которое ваше приложение должно предъявить, прежде чем взаимодействовать с Firebase.
Как работает App Check
Firebase App Check не просто слепо доверяет вашему приложению. Вместо этого он использует систему доверия, называемую провайдером аттестации (attestation provider), для проверки подлинности вашего приложения и отсутствия в нем изменений. Этот процесс проверки отвечает на три ключевых вопроса: является ли приложение подлинным, было ли оно модифицировано и было ли установлено из доверенного источника? Проверяя эти моменты, Firebase гарантирует, что только подлинные приложения могут взаимодействовать с его сервисами.
На Android поставщиком аттестации является Play Integrity API. Эта система помогает подтвердить, что действия пользователя и запросы к серверу поступают от вашего реального приложения, установленного через Google Play и работающего на подлинном, сертифицированном устройстве Android. Другими словами, она гарантирует, что приложение, взаимодействующее с Firebase, является именно тем приложением, которое вы создали, и ничем иным.
Как App Check проверяет ваше приложение:
- Ваше приложение запрашивает у Play Integrity API токен подтверждения
- Play Integrity проверяет целостность приложения
- Токен возвращается в Firebase
- Firebase проверяет токен
- Если токен действителен → доступ предоставлен, если токен недействителен → запрос заблокирован
Самое приятное, что все это происходит незаметно в фоновом режиме. Пользователи ничего не заметят, но Firebase незаметно гарантирует, что каждый запрос поступает из безопасной, реальной и неизмененной версии вашего приложения. Это добавляет невидимый уровень защиты, оберегая ваши данные, API и бэкэнд от неправомерного использования.
Как интегрировать App Check в Android-приложение
Предварительные условия: Перед началом убедитесь, что выполнены следующие требования:
- Проект Firebase создан
- Android-приложение добавлено в Firebase
- Файл google-services.json правильно настроен
- SDK Firebase уже добавлен.
Шаг 1: Добавьте зависимость App Check
В файле build.gradle на уровне приложения:
dependencies {
implementation "com.google.firebase:firebase-appcheck-playintegrity:LATEST_VERSION_HERE"
}
Шаг 2: Включите проверку приложения в вашем приложении
В вашем классе MainActivity или Application:
val firebaseAppCheck = FirebaseAppCheck.getInstance()
firebaseAppCheck.installAppCheckProviderFactory(
PlayIntegrityAppCheckProviderFactory.getInstance()
)
Вот и все! Теперь функция App Check активирована в вашем Android-приложении.
Шаг 3: Включите App Check в консоли Firebase
- Откройте консоль Firebase
- Перейдите в Настройки проекта
- Откройте App Check
- Выберите ваше Android-приложение
- Включите App Check
- Включите проверку для:
- Firestore
- Realtime Database
- Cloud Storage
После включения функции App Check:
- Сервисы Firebase будут ожидать действительный токен App Check
- Запросы без действительных токенов будут отклонены
Срок действия токена проверки приложения
После того, как Firebase App Check подтвердит подлинность вашего приложения, он предоставит ему временный токен. Этот токен действует как кратковременный пропуск, подтверждая Firebase, что вашему приложению можно доверять, пока оно взаимодействует с бэкэндом. Поскольку эти токены временные, со временем они истекают, но хорошая новость заключается в том, что Firebase SDK автоматически обновляет их. Ваше приложение может продолжать взаимодействовать с сервисами Firebase без перерыва, и в большинстве случаев вам даже не нужно об этом думать.
В некоторых случаях, например, при отладке или выполнении кастомных вызовов к бэкэнду, вам может потребоваться вручную получить новый токен. Это можно сделать с помощью простого вызова, например, firebaseAppCheck.getToken(forceRefresh: true). Параметр forceRefresh определяет, должен ли Firebase возвращать кэшированный токен, если он существует, или получать совершенно новый токен с сервера. Установка значения true заставляет систему выдавать новый токен, а значение false позволяет Firebase возвращать действительный кэшированный токен, если он доступен. Такая гибкость может быть очень полезна при тестировании или обработке особых сценариев в вашем приложении.
firebaseAppCheck.getToken(forceRefresh: true)
.addOnSuccessListener(token -> {
// Use token if needed
})
.addOnFailureListener(e -> {
// Handle error
})
Распространенные проблемы
Хотя Firebase App Check работает незаметно в фоновом режиме, защищая ваше приложение, иногда могут возникать неполадки. Знание этих распространенных проблем поможет вам быстро их устранить и обеспечить безопасность вашего приложения:
- Токен App Check не отправлен — Firebase не получил токен проверки от вашего приложения
- Приложение не установлено из Play Store — App Check ожидает, что приложение будет получено из надежного источника, такого как Google Play
- App Check не включен в консоли Firebase — App Check должен быть включен для работы вашего проекта
- Play Integrity API настроен неправильно — система, проверяющая подлинность вашего приложения, настроена неправильно
Использование App Check во время разработки и отладки
Хотя Play Integrity — это поставщик, используемый в производственной среде для обеспечения подлинности вашего приложения, разработка и отладка требуют несколько иного подхода. Во время разработки ваше приложение может быть установлено не из Play Store, или вы можете тестировать его на устройствах, которые не сертифицированы. В таких случаях Firebase предоставляет провайдер проверки отладочных приложений (Debug App Check Provider), который позволяет тестировать и разрабатывать ваше приложение без проблем с проверкой.
Использовать отладочный провайдер очень просто. Вы можете настроить его с помощью DebugAppCheckProviderFactory, который предоставляет вашему приложению отладочный токен. Этот токен действует как временный пропуск для вашего приложения во время разработки, позволяя тестировать функциональность App Check без необходимости использования Play Integrity. Как только ваше приложение будет готово к продакшену, вы можете вернуться к Play Integrity, чтобы обеспечить полную безопасность для ваших реальных пользователей.
Добавьте зависимость в файл build.gradle на уровне приложения:
dependencies {
implementation "com.google.firebase:firebase-appcheck-debug:LATEST_VERSION_HERE"
}
В вашем классе MainActivity или Application:
val firebaseAppCheck = FirebaseAppCheck.getInstance()
firebaseAppCheck.installAppCheckProviderFactory(
DebugAppCheckProviderFactory.getInstance()
)
Теперь запустите приложение и проверьте Logcat, чтобы получить отладочный токен:
Добавьте отладочный токен в App Check в консоли Firebase, чтобы избежать блокировки тестовой сборки:
Метрики запросов App Check
Метрики App Check показывают, сколько запросов поступает от действительных и недействительных приложений.
Вы можете увидеть такие тенденции, как:
- Всплеск недействительных запросов → возможная атака или злоупотребление
- Снижение действительных запросов → возможно, у легитимных пользователей возникают проблемы
Пример использования Firestore: проверка приложения в действии
// Add collection to Firestore
val db = FirebaseFirestore.getInstance()
val data = hashMapOf(
"text" to "Hi from Firestore App Check demo"
)
db.collection("messages")
.document("hello")
.set(data)
.addOnSuccessListener {
Log.d("DEMO", "Document written successfully")
}
.addOnFailureListener { e ->
Log.e("DEMO", "Firestore write failed", e)
}
Сценарий 1: Легитимное приложение
- Установлено из Play Store
- Действительный токен проверки приложения
- Доступ через Firestore разрешен
Сценарий 2: Модифицированное приложение
- Измененный APK
- Недействительный токен
- Доступ к Firestore заблокирован
Заключение
Firebase App Check не только прост в настройке, но и чрезвычайно эффективен для защиты вашего приложения и бэкэнда. Без него ваши сервисы Firebase остаются открытыми, ваши данные уязвимы для поддельных приложений, автоматизированных скриптов и потенциального неправомерного использования, которое может неожиданно увеличить ваши расходы.
Добавив всего несколько строк кода, вы можете защитить свои данные Firebase, заблокировать несанкционированный доступ и предотвратить злоупотребления, не нарушая при этом работу пользователей. App Check работает незаметно в фоновом режиме, обеспечивая вам уверенность в том, что только ваше настоящее, доверенное приложение может взаимодействовать с Firebase, обеспечивая безопасность как ваших пользователей, так и вашего бэкэнда.
Официальная документация: https://firebase.google.com/docs/app-check
Кодлаб: https://firebase.google.com/learn/pathways/firebase-app-check
-
Разработка4 недели назад
Навигация на SwiftUI: чего не хватает и как исправить
-
Видео и подкасты для разработчиков1 неделя назад
Разработка видеоредактора
-
Интервью4 недели назад
Маркетологи в мобайле: Святослав Зее (Head of Performancе, Okko)
-
Аналитика магазинов4 недели назад
Есть ли смысл выпускать платные приложения в 2026 году?









