La API de Play Integrity te ayuda a verificar que las acciones del usuario y las solicitudes del servidor provengan de tu app original, instalada por Google Play, que se ejecuta en un dispositivo Android original. Cuando se detectan interacciones riesgosas, como las que provienen de versiones manipuladas de la app, dispositivos poco confiables o entornos emulados, el servidor de backend puede tomar las medidas adecuadas para evitar el abuso y el acceso no autorizado, combatir el fraude y las trampas, y proteger a los usuarios de los ataques.
La API devuelve veredictos que te ayudan a detectar posibles amenazas, incluidos los siguientes:
- Acceso no autorizado: El veredicto
accountDetails
te ayuda a determinar si el usuario instaló o pagó tu app o juego en Google Play. - Manipulación del código: El veredicto
appIntegrity
te ayuda a determinar si interactúas con el objeto binario sin modificar que Google Play reconoce. - Dispositivos riesgosos y entornos emulados: El veredicto
deviceIntegrity
te ayuda a determinar si tu app se ejecuta en un dispositivo Android original certificado por Play Protect o en una instancia original de Google Play Juegos para PC.
Los desarrolladores de Google Play también pueden habilitar la opción para recibir veredictos adicionales y detectar una mayor variedad de amenazas potenciales, incluidas las siguientes:
- Dispositivos sin parches: La respuesta
MEETS_STRONG_INTEGRITY
en el veredictodeviceIntegrity
te ayuda a determinar si un dispositivo aplicó actualizaciones de seguridad recientes (para dispositivos que ejecutan Android 13 y versiones posteriores). - Acceso riesgoso por parte de otras apps: El
appAccessRiskVerdict
te ayuda a determinar si se están ejecutando apps que podrían usarse para capturar la pantalla, mostrar superposiciones o controlar el dispositivo (por ejemplo, si se usa de forma inadecuada el permiso de accesibilidad). - Software malicioso conocido: El
playProtectVerdict
te ayuda a determinar si Google Play Protect está activado y si encontró apps peligrosas o de riesgo instaladas en el dispositivo. - Hiperactividad: El nivel
recentDeviceActivity
te ayuda a determinar si un dispositivo realizó una cantidad anormalmente alta de solicitudes recientemente, lo que podría indicar tráfico automatizado y ser una señal de ataque. - Abuso reiterado y dispositivos reutilizados:
deviceRecall
(beta) te ayuda a determinar si interactúas con un dispositivo que marcaste anteriormente, incluso si se reinstaló tu app o se restableció el dispositivo.
La API se puede usar en todos los factores de forma de Android, incluidos teléfonos, tablets, dispositivos plegables, Android Auto, Android TV, Android XR, ChromeOS, Wear OS y en Google Play Juegos para PC.
Consideraciones de seguridad
La API de Play Integrity brinda el máximo valor a tu app cuando sigues estas prácticas recomendadas:
Asegúrate de contar con una estrategia contra el abuso
La API de Play Integrity funciona mejor cuando se usa junto con otros indicadores como parte de tu estrategia general contra el abuso y no como tu único mecanismo antiabuso. Usa esta API junto con otras prácticas recomendadas de seguridad para tu app. De forma predeterminada, tu app puede realizar hasta 10,000 solicitudes totales por día en todas las instalaciones. Puedes solicitar que se aumente tu máximo diario.
Recopila información sobre la telemetría y comprende a tu público antes de realizar acciones
Antes de cambiar el comportamiento de tu app según los veredictos de la API de Play Integrity, puedes comprender la situación actual con tu público existente implementando la API sin aplicación forzosa. Una vez que sepas qué veredictos muestra tu base de instalaciones actual, puedes estimar el impacto de cualquier aplicación forzosa que estés planeando y ajustar tu estrategia contra el abuso según corresponda.
Decide cómo solicitarás los veredictos de integridad
La API de Play Integrity ofrece dos opciones para solicitar y recibir veredictos de integridad. Ya sea que realices solicitudes estándar, clásicas o una combinación de ambas, la respuesta de veredicto de integridad se mostrará en el mismo formato.
Las solicitudes a la API estándar son adecuadas para cualquier app o juego, y se pueden realizar a pedido para verificar que cualquier acción del usuario o solicitud del servidor sea genuina. Las solicitudes estándar tienen la latencia más baja (cientos de milisegundos en promedio) y una confiabilidad alta para obtener un veredicto que se puede usar. Las solicitudes estándar usan almacenamiento en caché inteligente en el dispositivo y delegan la protección contra ciertos tipos de ataques a Google Play.
Las solicitudes a la API clásicas, la forma original de solicitar veredictos de integridad, también siguen disponibles. Las solicitudes clásicas tienen una latencia más alta (algunos segundos en promedio) y eres responsable de mitigar el riesgo de algunos tipos de ataques. Las solicitudes clásicas usan más de los datos y la batería del usuario que las solicitudes estándar, ya que inician una evaluación nueva y, por lo tanto, deben realizarse con poca frecuencia como una alternativa única para verificar si una acción altamente sensible o valiosa es original. Si estás considerando realizar una solicitud clásica y almacenarla en caché para usarla más adelante, debes realizar una solicitud estándar para reducir el riesgo de ataques.
En la siguiente tabla, se destacan algunas diferencias clave entre los dos tipos de solicitudes:
Solicitud a la API estándar | Solicitud a la API clásica | |
---|---|---|
Una versión mínima del SDK de Android requerida | Android 5.0 (nivel de API 21) o una versión posterior | Android 4.4 (nivel de API 19) o una versión posterior |
Preparación de la API requerida | ✔️ (unos segundos) | ❌ |
Latencia de solicitud típica | Unos cientos de milisegundos | Unos segundos |
Frecuencia de solicitudes potencial | Frecuente (verificación a pedido de cualquier acción o solicitud) | Infrecuente (verificación única de acciones de mayor valor o solicitudes más sensibles) |
Mitigación contra ataques de repetición y similares | Mitigación automática de Google Play | Uso del campo nonce con la lógica del servidor |
Puedes ver una tabla con más diferencias en las consideraciones de la solicitud clásica.
Cómo solicitar un veredicto de integridad en el momento oportuno
Debes solicitar un veredicto de riesgo de acceso a la app lo más cerca posible del momento de la acción o la solicitud del servidor que quieres proteger contra el acceso para evitar que los estafadores evadan en la verificación de integridad que realiza el tu app.
Haz que tus solicitudes a la API sean difíciles de replicar
Las solicitudes a la API estándar tienen un campo llamado requestHash
que se usa para protegerte contra la manipulación y ataques similares. En este campo, debes incluir un resumen de todos los valores relevantes de la solicitud de tu app. Sigue las instrucciones sobre cómo usar la vinculación de contenido y proteger las solicitudes estándar de tu app.
Las solicitudes a la API clásicas tienen un campo llamado nonce
(abreviatura de "number once"), que se usa para proteger contra ciertos tipos de ataques, como los de repetición y alteración. Sigue las instrucciones para generar nonces y proteger las solicitudes clásicas de tu app.
Evita que los veredictos de integridad se almacenen en caché
El almacenamiento en caché de los veredictos de integridad aumenta el riesgo de generar proxies, que es un ataque en el que una entidad que actúa de mala fe reutiliza un veredicto de un dispositivo confiable con fines abusivos en otro entorno. En lugar de almacenar respuestas en caché, puedes hacer una solicitud a la API estándar para obtener un veredicto a pedido.
Asegúrate de contar con una estrategia de aplicación por niveles
El veredicto de integridad de la API de Play Integrity tiene un rango de respuestas posibles que permiten crear una estrategia antiabuso con varios niveles de aplicación. Para ello, puedes configurar el servidor de backend de tu app, de modo que se comporte de manera diferente según cada respuesta o grupo de respuestas posible.
También puedes habilitar tu estrategia de aplicación por niveles en función de la confiabilidad de los dispositivos. Para ello, debes habilitar la opción de recibir etiquetas de dispositivos adicionales en tu respuesta de la API desde Play Console. Cada dispositivo mostrará todas las etiquetas cuyos criterios satisfaga. Por ejemplo, después de aceptar recibir todas las etiquetas del dispositivo, puedes confiar en un dispositivo que muestra MEETS_STRONG_INTEGRITY
, MEETS_DEVICE_INTEGRITY
y MEETS_BASIC_INTEGRITY
más que en un dispositivo que solo muestra MEETS_BASIC_INTEGRITY
. Puedes responder de manera diferente al servidor en cada situación.
Envía un rango de respuestas del servidor a la app
Tener un rango de resultados de decisión es más difícil de replicar que enviar una respuesta binaria de permiso/denegación del servidor a la app para cada respuesta. Por ejemplo, puedes usar una serie de respuestas relacionadas, como Permitir, Permitir con límites, Permitir con límites después de que se complete el captcha y Rechazar.
Detecta el abuso repetido con el reconocimiento de dispositivo y preserva la privacidad del usuario
El reconocimiento de dispositivo permite que las apps almacenen y recuperen algunos datos personalizados asociados con un dispositivo específico de una manera que preserva la privacidad del usuario. Los datos se almacenan en los servidores de Google, lo que permite que tu app recupere de forma confiable datos de cada dispositivo, incluso después de que se haya reinstalado la app o se haya restablecido el dispositivo. Esto te brinda una forma confiable de volver a identificar un dispositivo que detectaste como abusivo en el pasado para que puedas tomar medidas y evitar que se vuelva a usar para abusos. Puedes definir tu propio significado para los tres valores que componen los datos de recuperación del dispositivo:
- Podrías usarlos como hasta tres marcas o booleanos separados. Por ejemplo, los valores podrían representar que un dispositivo creó o no una cuenta, canjeó o no una prueba gratuita, o se sabe que cometió o no abusos de alta gravedad.
- Como alternativa, puedes combinar todos los estados de los valores en hasta ocho etiquetas personalizadas, por ejemplo, una etiqueta para el estado predeterminado cuando los tres valores no se modifican y siete etiquetas con significados personalizados. Esto te permite segmentar todos los dispositivos en hasta ocho grupos según los comportamientos o las acciones que definas. En este caso, el
writeDates
más reciente de los tres indica cuándo actualizaste la etiqueta por última vez.
También ten en cuenta los requisitos previos y otras consideraciones cuando trabajes con datos de retiro de dispositivos.
Detecta el abuso a gran escala con la actividad reciente del dispositivo
Usa la función de actividad reciente del dispositivo en la API de Play Integrity para encontrar dispositivos que soliciten una gran cantidad de tokens de integridad. Los abusadores de alto volumen de actividades suelen generar resultados de certificación válidos a partir de dispositivos reales y proporcionarlos a bots para automatizar ataques en emuladores y dispositivos con permisos de administrador. Puedes usar el nivel de actividad reciente del dispositivo para verificar cuántas certificaciones generó tu app en ese dispositivo durante la última hora.
Muestra mensajes de error prácticos
Cuando sea posible, proporciona mensajes de error útiles al usuario y dile qué hacer para solucionarlo, como volver a intentar la acción, habilitar la conexión a Internet o verificar si la app de Google Play Store está actualizada.
Ten un plan para problemas inesperados o interrupciones
En el panel de estado de Play, se muestra información sobre el estado del servicio de la API de Play Integrity, así como información sobre cualquier interrupción. Debes planificar con anticipación cómo quieres que funcione el servidor de backend en el caso improbable de una interrupción a gran escala de la API de Play Integrity. Ten en cuenta que tu servidor de backend también debe estar listo para funcionar en el caso de que se revoquen las claves de atestación de la clave de la plataforma de Android específicas para dispositivos.
Considera soluciones de fraude empresarial de extremo a extremo
Los clientes empresariales que buscan una solución completa de administración de fraudes y bots pueden comprar reCAPTCHA Enterprise para dispositivos móviles, que incluye SDKs para Android que proporcionan puntuaciones de riesgo de fraude a los desarrolladores. reCAPTCHA Enterprise incluye automáticamente los indicadores de la API de Play Integrity y los combina con indicadores de aplicaciones y de la red de reCAPTCHA para clientes, lo que proporciona una solución de administración de fraudes invisible y sin inconvenientes. También puede brindar protección para las apps para Android en las que la API de Play Integrity no está disponible.
Desafía el tráfico riesgoso cuando se accede a funciones sensibles o de alto valor
Identifica acciones sensibles o de alto valor en tu app o juego para protegerlas con la API de Play Integrity en lugar de denegar directamente el acceso. Cuando sea posible, desafía el tráfico riesgoso antes de permitir que se realicen acciones de alto valor. Por ejemplo, cuando el riesgo de acceso a la app indique que se está ejecutando una app que podría capturar la pantalla, pídele al usuario que inhabilite o desinstale apps que puedan capturar la pantalla antes de permitirle continuar con la funcionalidad que quieres proteger.
Condiciones del Servicio y seguridad de los datos
Cuando accedes a la API de Play Integrity o la usas, aceptas sus Condiciones del Servicio. Asegúrate de leer y entender todas las condiciones y políticas aplicables antes de acceder a la API.
Google Play tiene una sección de Seguridad de los datos para que los desarrolladores divulguen las prácticas de seguridad, uso compartido y recopilación de datos de sus apps y mantener informados a sus usuarios. Para ayudarte a completar el formulario, consulta la siguiente información sobre cómo la API de Play Integrity controla los datos.