API Play Integrity помогает вам убедиться, что действия пользователей и запросы к серверу исходят от вашего подлинного приложения, установленного через Google Play и работающего на подлинном устройстве Android. Выявляя рискованные взаимодействия, например, связанные с подменёнными версиями приложения, ненадёжными устройствами или эмулированными средами, ваш внутренний сервер может предпринять соответствующие меры для предотвращения злоупотреблений и несанкционированного доступа, борьбы с мошенничеством, обманом и защиты пользователей от атак.
API возвращает вердикты, которые помогают обнаружить потенциальные угрозы, в том числе:
- Несанкционированный доступ : вердикт
accountDetails
поможет вам определить, установил ли пользователь или оплатил ваше приложение или игру в Google Play. - Подделка кода : вердикт
appIntegrity
помогает определить, взаимодействуете ли вы с неизмененным двоичным файлом, распознаваемым Google Play. - Опасные устройства и эмулированные среды : вердикт
deviceIntegrity
помогает определить, работает ли ваше приложение на подлинном устройстве Android, сертифицированном Play Protect, или на подлинном экземпляре Google Play Games для ПК.
Разработчики Google Play также могут подписаться на получение дополнительных вердиктов для обнаружения более широкого спектра потенциальных угроз, включая:
- Устройства без обновлений : ответ
MEETS_STRONG_INTEGRITY
в вердиктеdeviceIntegrity
помогает определить, были ли на устройстве применены последние обновления безопасности (для устройств под управлением Android 13 и выше). - Опасный доступ со стороны других приложений:
appAccessRiskVerdict
помогает определить, запущены ли приложения, которые могут использоваться для захвата экрана, отображения наложений или управления устройством (например, путем неправомерного использования разрешения на специальные возможности). - Известное вредоносное ПО:
playProtectVerdict
помогает определить, включена ли защита Google Play и обнаружены ли на устройстве рискованные или опасные приложения. - Гиперактивность: уровень
recentDeviceActivity
помогает определить, делало ли устройство в последнее время аномально большой объем запросов, что может указывать на автоматизированный трафик и быть признаком атаки. - Повторное использование и повторное использование устройств:
deviceRecall
(бета-версия) помогает определить, взаимодействуете ли вы с устройством, которое вы ранее пометили, даже если ваше приложение было переустановлено или устройство было сброшено.
API можно использовать на всех устройствах Android, включая телефоны, планшеты, складные устройства, Android Auto, Android TV, Android XR, ChromeOS, Wear OS и в Google Play Games для ПК.
Соображения безопасности
API Play Integrity обеспечит максимальную отдачу для вашего приложения, если вы будете следовать следующим рекомендациям:
Иметь стратегию борьбы со злоупотреблениями
API Play Integrity наиболее эффективен при использовании вместе с другими сигналами в рамках вашей общей стратегии борьбы со злоупотреблениями, а не в качестве единственного механизма. Используйте этот API в сочетании с другими подходящими передовыми практиками обеспечения безопасности для вашего приложения. По умолчанию ваше приложение может выполнять до 10 000 запросов в день для всех установок. Вы можете запросить увеличение суточного лимита .
Собирайте телеметрию и изучайте свою аудиторию, прежде чем предпринимать какие-либо действия.
Прежде чем менять поведение приложения на основе вердиктов API Play Integrity, вы можете оценить текущую ситуацию с вашей текущей аудиторией, внедрив API без применения мер принудительного характера. Определив, какие вердикты выдаёт ваша текущая база установок, вы сможете оценить влияние любых планируемых мер принудительного характера и соответствующим образом скорректировать стратегию борьбы со злоупотреблениями.
Решите, как вы будете запрашивать вердикты о добросовестности
API Play Integrity предлагает два варианта запроса и получения результатов проверки целостности. Независимо от того, отправляете ли вы стандартные запросы, классические запросы или комбинацию обоих типов запросов, ответ о проверке целостности будет возвращен в одном и том же формате.
Стандартные запросы к API подходят для любого приложения или игры и могут быть выполнены по запросу для проверки подлинности любого действия пользователя или запроса к серверу. Стандартные запросы имеют минимальную задержку (в среднем несколько сотен миллисекунд) и высокую надёжность получения полезного результата. Стандартные запросы используют интеллектуальное кэширование на устройстве, делегируя защиту от определённых типов атак Google Play.
Классические API-запросы , изначально использовавшиеся для запроса вердиктов о целостности, также по-прежнему доступны. Классические запросы имеют более высокую задержку (в среднем несколько секунд), и вы несёте ответственность за снижение риска определённых типов атак. Классические запросы используют больше данных пользователя и заряда батареи, чем стандартные запросы, поскольку они инициируют новую оценку, поэтому их следует выполнять нечасто, как разовую проверку подлинности высококонфиденциального или ценного действия. Если вы рассматриваете возможность создания классического запроса и его кэширования для последующего использования, то для снижения риска атак следует использовать стандартный запрос.
В следующей таблице показаны некоторые ключевые различия между двумя типами запросов:
Стандартный API-запрос | Классический API-запрос | |
---|---|---|
Требуется минимальная версия Android SDK | Android 5.0 (уровень API 21) или выше | Android 4.4 (уровень API 19) или выше |
Требуется прогрев API | ✔️ (несколько секунд) | ❌ |
Типичная задержка запроса | Несколько сотен миллисекунд | Несколько секунд |
Потенциальная частота запросов | Частые (проверка по требованию на наличие каких-либо действий или запросов) | Нечасто (однократная проверка для наиболее важных действий или наиболее конфиденциальных запросов) |
Уменьшение вероятности повторного воспроизведения и подобных атак | Автоматическое смягчение последствий через Google Play | Использовать поле nonce с логикой на стороне сервера |
Вы можете увидеть таблицу с дополнительными различиями в рассмотрении классических запросов .
Запросите вердикт о добросовестности в подходящий момент
Вам следует запросить вердикт о риске доступа к приложению как можно ближе к моменту действия или запроса к серверу, от доступа к которому вы хотите защититься, чтобы не дать мошенникам обойти проверку целостности, выполняемую вашим приложением.
Сделайте так, чтобы ваши запросы API было сложно воспроизводить
Стандартные запросы API содержат поле requestHash
, которое используется для защиты от подмены и подобных атак. В это поле необходимо включить дайджест всех соответствующих значений из запроса вашего приложения. Следуйте инструкциям по использованию привязки контента для защиты стандартных запросов вашего приложения.
В запросах классического API есть поле nonce
(сокращение от number once), которое используется для защиты от определённых типов атак, таких как атаки с повторным воспроизведением и подделкой. Следуйте инструкциям по генерации nonce для защиты классических запросов вашего приложения.
Избегайте кэширования вердиктов о целостности
Кэширование вердиктов целостности увеличивает риск проксирования — атаки, при которой злоумышленник повторно использует вердикт с исправного устройства в целях злоупотребления в другой среде. Вместо кэширования ответов вы можете сделать стандартный API-запрос , чтобы получить вердикт по требованию.
Иметь многоуровневую стратегию принуждения
Вердикт о целостности API Play Integrity предполагает ряд возможных ответов, что позволяет построить стратегию борьбы со злоупотреблениями с несколькими уровнями контроля. Это можно сделать, настроив внутренний сервер приложения на различное поведение в зависимости от каждого возможного ответа или группы ответов.
Вы также можете настроить стратегию контроля на основе уровня доверия устройств, включив получение дополнительных меток устройств в ответе API от Play Console. Каждое устройство будет возвращать все метки, соответствующим критериям. Например, после включения получения всех меток устройств вы можете доверять устройству, возвращающему MEETS_STRONG_INTEGRITY
, MEETS_DEVICE_INTEGRITY
и MEETS_BASIC_INTEGRITY
, больше, чем устройству, возвращающему только MEETS_BASIC_INTEGRITY
. В каждом сценарии сервер может отвечать по-разному.
Отправьте ряд ответов с вашего сервера в ваше приложение
Воспроизвести диапазон результатов принятия решений сложнее, чем отправлять двоичный ответ «Разрешить/Запретить» с сервера обратно в приложение для каждого ответа. Например, можно использовать серию связанных ответов, таких как «Разрешить», «Разрешить с ограничениями», «Разрешить с ограничениями после прохождения CAPTCHA» и «Запретить».
Выявляйте повторные злоупотребления с помощью отзыва устройств, сохраняя при этом конфиденциальность пользователей.
Функция отзыва устройств позволяет приложениям хранить и отзывать некоторые пользовательские данные, связанные с конкретным устройством, сохраняя конфиденциальность пользователя. Эти данные хранятся на серверах Google, что позволяет вашему приложению надежно отзывать данные по каждому устройству даже после переустановки приложения или сброса настроек устройства. Это дает вам надежный способ повторно идентифицировать устройство, которое вы обнаружили в прошлом, чтобы принять меры и предотвратить его повторное использование в злоупотреблениях. Вы можете определить собственное значение для трех значений, составляющих данные отзыва устройств:
- Вы можете использовать их как до трёх отдельных флагов или логических значений. Например, значения могут указывать на то, что на устройстве создана учётная запись или нет, использована бесплатная пробная версия или нет, а также известно ли о серьёзных нарушениях.
- В качестве альтернативы вы можете объединить все состояния значений в восемь пользовательских меток, например, одну метку для состояния по умолчанию, когда все три значения не изменялись, и семь меток с пользовательскими значениями. Это позволяет сегментировать все устройства на восемь групп на основе определяемых вами действий или поведения. В этом случае последняя обновлённая из трёх
writeDates
указывает на дату последнего обновления метки.
Также при работе с данными об отзыве устройств следует учитывать предварительные условия и другие соображения .
Выявляйте крупномасштабные злоупотребления, используя недавнюю активность устройства
Используйте функцию недавней активности устройства в API Play Integrity, чтобы найти устройства, запрашивающие большое количество токенов целостности. Злоумышленники, активно использующие аутентификацию, обычно генерируют достоверные результаты аттестации с реальных устройств и предоставляют их ботам для автоматизации атак на устройства с root-доступом и эмуляторы. Вы можете использовать уровень недавней активности устройства, чтобы проверить, сколько аттестаций было сгенерировано вашим приложением на этом устройстве за последний час.
Показывать сообщения об ошибках, требующие действий
По возможности предоставляйте пользователю полезные сообщения об ошибках и дайте ему знать, что можно сделать для их исправления, например, повторить попытку, включить подключение к Интернету или проверить, обновлено ли приложение Play Store.
Имейте план на случай непредвиденных проблем или сбоев
На панели состояния Play отображается информация о состоянии службы Play Integrity API, а также о любых сбоях и отключениях. Вам следует заранее спланировать работу вашего внутреннего сервера в случае маловероятного масштабного сбоя Play Integrity API. Обратите внимание, что ваш внутренний сервер также должен быть готов к работе в случае отзыва ключей подтверждения ключа платформы Android, специфичных для устройств.
Рассмотрите комплексные решения по борьбе с мошенничеством в корпоративном секторе
Корпоративные клиенты, которым требуется комплексное решение для борьбы с мошенничеством и ботами, могут приобрести reCAPTCHA Enterprise для мобильных устройств, которое включает в себя SDK для Android , предоставляющие разработчикам оценки риска мошенничества. reCAPTCHA Enterprise автоматически включает сигналы API Play Integrity и объединяет их с сигналами сети и приложений reCAPTCHA для клиентов, предоставляя бесперебойное и незаметное решение для борьбы с мошенничеством «из коробки». Оно также обеспечивает защиту приложений Android, для которых API Play Integrity недоступен.
Пробуйте рискованные маршруты при доступе к ценным или конфиденциальным объектам.
Определите важные или конфиденциальные действия в вашем приложении или игре, чтобы защитить их с помощью API Play Integrity вместо того, чтобы полностью запрещать доступ. По возможности, проверяйте рискованный трафик, прежде чем разрешать выполнение важных действий. Например, если риск доступа к приложению указывает на то, что запущено приложение, способное делать снимки экрана, попросите пользователя отключить или удалить приложения, способные делать снимки экрана, прежде чем разрешить ему доступ к функциям, которые вы хотите защитить.
Условия обслуживания и безопасность данных
Получая доступ к Play Integrity API или используя его, вы соглашаетесь с Условиями использования Play Integrity API . Перед использованием API, пожалуйста, ознакомьтесь со всеми применимыми условиями и политиками.
В Google Play есть раздел безопасности данных, где разработчики могут раскрывать информацию о методах сбора, передачи и обеспечения безопасности данных в своих приложениях, чтобы информировать пользователей. Чтобы помочь вам заполнить форму данных, ознакомьтесь с этой информацией о том , как API Play Integrity обрабатывает данные .