Visão geral da API Play Integrity

A API Play Integrity ajuda a verificar se as interações e solicitações do servidor vêm do binário genuíno do app em execução em um dispositivo Android legítimo. Ao detectar interações possivelmente perigosas e fraudulentas, como versões do app adulteradas e ambientes não confiáveis, o servidor de back-end do app pode responder com as ações adequadas para evitar ataques e reduzir abusos.

Quando o app ou jogo é usado em um dispositivo Android com a Google Play Store e a tecnologia do Google Play Services, a API Play Integrity fornece uma resposta que ajuda a determinar se você está interagindo com o seguinte:

  • Binário genuíno do app: determina se você está interagindo com o binário não modificado reconhecido pelo Google Play.
  • Instalação genuína do Play: determina se a conta do usuário atual é licenciada, o que indica se o usuário instalou ou pagou pelo app ou jogo no Google Play.
  • Dispositivo Android genuíno: determina se o app está sendo executado em um dispositivo Android genuíno com a tecnologia do Google Play Services (ou uma instância genuína do Google Play Games para PC).

Você também pode optar por receber informações sobre o ambiente na resposta da API Play Integrity, incluindo:

  • Risco de acesso ao app:determine se há apps em execução que podem ser usados para capturar a tela, mostrar sobreposições ou controlar o dispositivo.
  • Risco de malware conhecido:determine se o Google Play Protect está ativado e se encontrou apps de risco ou perigosos instalados no dispositivo.

Informações gerais

Quando um usuário realiza uma ação no app, você pode chamar a API Play Integrity para verificar se isso aconteceu no binário genuíno do app, instalado pelo Google Play, em execução em um dispositivo Android genuíno. Também é possível ativar outras informações na resposta, incluindo o volume de solicitações feitas recentemente e indicadores sobre o ambiente, incluindo o veredito de risco de acesso a apps e o veredito do Play Protect. Se algo estiver errado com os vereditos, o servidor de back-end do app poderá decidir o que fazer para se proteger contra problemas como abuso e fraude, uso indevido e trapaça, acesso não autorizado e ataques.

Fluxo de visão geral
da API Play Integrity

Considerações sobre segurança

A API Play Integrity oferece um melhor resultado quando você segue estas práticas recomendadas:

Tenha uma estratégia contra abusos

A API Play Integrity funciona melhor quando usada em conjunto com outros sinais como parte da sua estratégia geral contra abuso, e não como o único mecanismo antiabuso. Use a API em conjunto com outras práticas recomendadas de segurança adequadas para o app. Por padrão, o app pode fazer até 10.000 solicitações por dia em todas as instalações. É possível solicitar o aumento do limite máximo diário.

Colete telemetria e entenda seu público-alvo antes de agir

Antes de mudar a forma como o app se comporta com base nos vereditos da API Play Integrity, é possível entender a situação atual com o público implementando a API sem restrições. Depois de saber quais vereditos a base instalada atual está retornando, é possível estimar o impacto de qualquer restrição que você planeja e ajustar a estratégia antiabuso de acordo.

Decida como solicitar vereditos de integridade

A API Play Integrity oferece duas opções para solicitar e receber vereditos de integridade. Se você fizer solicitações padrão, solicitações clássicas ou uma combinação dos dois tipos de solicitação, a resposta do veredito de integridade será retornada no mesmo formato.

As solicitações de API padrão são adequadas para todos os apps ou jogos e podem ser feitas sob demanda para verificar se uma ação do usuário ou solicitação do servidor é genuína. As solicitações padrão têm a menor latência (algumas centenas de milissegundos, em média) e uma alta confiabilidade de um veredito utilizável. As solicitações padrão usam o armazenamento em cache inteligente no dispositivo e delegam proteção ao Google Play contra certos tipos de ataque.

As solicitações de API clássicas, a forma original de solicitar vereditos de integridade, também continuarão disponíveis. As solicitações clássicas têm maior latência (alguns segundos, em média) e você é responsável por reduzir o risco de determinados tipos de ataques. As solicitações clássicas usam mais dados e bateria do usuário do que as padrão porque iniciam uma nova avaliação e, por isso, não devem ser feitas com frequência. Elas são úteis para conferir se uma ação altamente confidencial ou valiosa é genuína. Se estiver pensando em fazer uma solicitação clássica e armazená-la em cache para uso futuro, faça uma solicitação padrão para reduzir o risco de ataques.

A tabela abaixo destaca as principais diferenças entre os dois tipos de solicitações:

Solicitação de API padrão Solicitação de API clássica
Versão mínima do SDK do Android exigida Android 5.0 (nível 21 da API) ou mais recente Android 4.4 (nível 19 da API) ou mais recente
Aquecimento da API necessário ✔️ (alguns segundos)
Latência de solicitação típica Algumas centenas de milissegundos Alguns segundos
Possível frequência de solicitação Frequente (verificação sob demanda de qualquer ação ou solicitação) Infrequente (verificação única para ações de maior valor ou solicitações mais sensíveis)
Mitigação de ataques de repetição e semelhantes Mitigação automática do Google Play Use o campo nonce com a lógica do lado do servidor

Consulte uma tabela com mais diferenças nas considerações sobre solicitações clássicas.

Solicitar um veredito de integridade em um momento adequado

Solicite um veredito de risco de acesso ao app o mais próximo possível do momento da ação ou da solicitação do servidor que você quer proteger contra o acesso, para evitar que os golpistas ignorem a verificação de integridade realizada pelo app.

Torne as solicitações de API difíceis de replicar

As solicitações de API padrão têm um campo chamado requestHash, que é usado para proteger contra adulteração e ataques semelhantes. Nesse campo, inclua um resumo de todos os valores relevantes da solicitação do app. Siga as orientações sobre como usar a vinculação de conteúdo para proteger as solicitações padrão do app.

As solicitações de API clássicas têm um campo chamado nonce (abreviação de "number once"), que é usado para proteção contra certos tipos de ataque, como ataques de repetição e adulteração. Siga as orientações sobre como gerar valores de uso único para proteger as solicitações clássicas do app.

Evite armazenar vereditos de integridade em cache

Armazenar vereditos de integridade em cache aumenta o risco de proxy, que é um ataque em que um usuário de má-fé reutiliza um veredito de um dispositivo genuíno para fins abusivos em outro ambiente. Em vez de armazenar as respostas em cache, faça uma solicitação de API padrão para receber um veredito sob demanda.

Tenha uma estratégia de aplicação em níveis

O veredito de integridade da API Play Integrity tem várias respostas possíveis, o que possibilita criar uma estratégia antiabuso com vários níveis de aplicação. Você pode fazer isso configurando o servidor de back-end do app para se comportar de maneira diferente dependendo de cada resposta possível ou de cada grupo de respostas.

Também é possível classificar sua estratégia de aplicação com base na confiabilidade do dispositivo, ativando o recebimento de outros rótulos de dispositivo na resposta da API no Play Console. Cada dispositivo retornará todos os rótulos que atendem aos critérios. Por exemplo, depois de ativar o recebimento de todos os identificadores de dispositivo, você pode confiar mais em um dispositivo que retorna MEETS_STRONG_INTEGRITY, MEETS_DEVICE_INTEGRITY e MEETS_BASIC_INTEGRITY do que um dispositivo que só retorna MEETS_BASIC_INTEGRITY. É possível usar respostas diferentes do servidor para cada cenário.

Envie outros tipos de respostas do servidor ao app

Ter vários resultados de decisão é mais difícil do que enviar uma resposta binária de Permitir/Negar do servidor de volta ao app para cada resposta. Por exemplo, você pode usar uma série de respostas relacionadas, como Permitir, Permitir com limites, Permitir com limites após o preenchimento do CAPTCHA e Negar.

Detecte abuso em grande escala usando a atividade recente do dispositivo

Use o recurso Atividade recente do dispositivo na API Play Integrity para encontrar dispositivos que solicitam um grande número de tokens de integridade. Os infratores de atividade de alto volume geralmente geram resultados de atestado válidos usando dispositivos reais e os fornecem a bots para automatizar ataques em dispositivos e emuladores com acesso root. Você pode usar o nível de atividade recente do dispositivo para verificar quantos atestados foram gerados pelo app nesse dispositivo na última hora.

Mostre mensagens de erro significativas

Quando possível, forneça mensagens de erro úteis aos usuários e os informe sobre o que pode ser feito para corrigir o problema, como tentar de novo, ativar a conexão de Internet ou conferir se o app da Play Store está atualizado.

Antecipar problemas ou falhas inesperadas

O painel de status do Google Play mostra o status do serviço da API Play Integrity, além de informações sobre quaisquer interrupções e falhas temporárias. É possível configurar antecipadamente como você quer que o servidor de back-end funcione no caso improvável de uma interrupção do serviço em grande escala da API Play Integrity.

Considere soluções completas de fraude corporativa

Clientes empresariais que procuram uma solução completa de gerenciamento de fraudes e bots podem adquirir o reCAPTCHA Enterprise para dispositivos móveis, que conta com SDKs para Android com pontuações de risco de fraude. O reCAPTCHA Enterprise inclui automaticamente os indicadores da API Play Integrity e os combina com a rede reCAPTCHA e indicadores de aplicativos para clientes, fornecendo uma solução de gerenciamento de fraudes simples e descomplicada. Ele também pode fornecer proteção para apps Android em que a API Play Integrity não está disponível.

Desafiar tráfego arriscado ao acessar recursos confidenciais ou de alto valor

Identifique ações sensíveis ou de alto valor no app ou jogo para proteger com a API Play Integrity em vez de negar o acesso imediatamente. Sempre que possível, conteste o tráfego arriscado antes de permitir ações de alto valor. Por exemplo, quando o risco de acesso indicar que um app que pode capturar a tela está em execução, peça para o usuário desativar ou desinstalar apps que conseguem fazer isso antes de permitir que ele prossiga para a funcionalidade que você quer proteger.

Termos de Serviço e segurança dos dados

Ao acessar ou usar a API Play Integrity, você concorda com os Termos de Serviço da API Play Integrity. Leia e entenda todos os termos e políticas relevantes antes de acessar a API.

O Google Play tem uma seção "Segurança dos dados" para que os desenvolvedores divulguem as práticas de coleta, compartilhamento e segurança de dados dos apps para manter os usuários informados. Para ajudar você a preencher o formulário de dados, consulte estas informações sobre como a API Play Integrity lida com dados.