La API de Play Integrity te ayuda a verificar que las interacciones y las solicitudes del servidor provengan del objeto binario original de la app que se ejecuta en un dispositivo Android original. Cuando se detectan interacciones potencialmente peligrosas y fraudulentas, como versiones manipuladas de la app y entornos poco confiables, el servidor de backend de tu app puede tomar las medidas adecuadas para evitar los ataques y reducir los abusos.
Cuando tu app o juego se usan en un dispositivo Android con Google Play Store y cuentan con la tecnología de los Servicios de Google Play, la API de Play Integrity proporciona una respuesta que te ayuda a determinar si interactúas con lo siguiente:
- Objeto binario original de la app: Determina si interactúas con el objeto binario sin modificar que Google Play reconoce.
- Instalación original de Play: Determina si la cuenta de usuario actual tiene licencia, lo que significa que el usuario instaló o pagó la app o el juego en Google Play.
- Dispositivo Android original: Determina si tu app se ejecuta en un dispositivo Android original con la tecnología de los Servicios de Google Play (o una instancia original de Google Play Juegos para PC).
También puedes elegir recibir información sobre el entorno en la respuesta de la API de Play Integrity, como la siguiente:
- Riesgo de acceso de apps: Determina si se están ejecutando apps que podrían usarse para capturar la pantalla, mostrar superposiciones o controlar el dispositivo.
- Riesgo de software malicioso conocido: Determina si Google Play Protect está activado y si encontró apps peligrosas o de riesgo instaladas en el dispositivo.
Descripción general
Cuando un usuario realiza una acción en tu app, puedes llamar a la API de Play Integrity para verificar que la acción se haya realizado en el objeto binario original de tu app, que Google Play instaló, y que se ejecuta en un dispositivo Android original. También puedes habilitar información adicional en la respuesta, como el volumen de solicitudes que realizó un dispositivo recientemente y los indicadores sobre el entorno, incluido el veredicto de riesgo de acceso de apps y el veredicto de Play Protect. Si hay algún problema con los veredictos, el servidor de backend de tu app puede decidir qué hacer para protegerte contra problemas como abuso y fraude, uso inadecuado, trampas, acceso no autorizado y ataques.
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 implementar la API sin aplicación forzosa para comprender la situación actual con tu público existente. 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 la verificación de integridad que realiza 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 casos de 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 certificación de claves de la plataforma de Android específicas para los 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.