Panoramica dell'API Play Integrity

L'API Play Integrity ti aiuta a controllare che le interazioni e le richieste del server provengano dal programma binario dell'app originale in esecuzione su un dispositivo Android originale. Individuando le interazioni potenzialmente rischiose e fraudolente, ad esempio da versioni dell'app manomesse e ambienti non attendibili, il server di backend dell'app può rispondere con azioni appropriate per prevenire gli attacchi e ridurre gli abusi.

Quando la tua app o il tuo gioco vengono utilizzati su un dispositivo Android con il Google Play Store e con Google Play Services, l'API Play Integrity fornisce una risposta che ti aiuta a determinare se stai interagendo con quanto segue:

  • File binario dell'app originale: consente di stabilire se stai interagendo o meno con il tuo file binario non modificato riconosciuto da Google Play.
  • Installazione Play originale: consente di stabilire se l'account utente corrente dispone di una licenza, ovvero se l'utente ha installato o acquistato l'app o il gioco su Google Play.
  • Dispositivo Android originale: consente di stabilire se la tua app è installata o meno su un dispositivo Android originale con Google Play Services (o un'istanza originale di Google Play Giochi per PC).

Puoi anche scegliere di ricevere informazioni sull'ambiente nella risposta dell'API Play Integrity, tra cui:

  • Rischio di accesso alle app: determina se sono in esecuzione app che potrebbero essere utilizzate per acquisire lo schermo, visualizzare overlay o controllare il dispositivo.
  • Rischio derivante da malware noto: determina se Google Play Protect è attivo e se ha trovato app rischiose o pericolose installate sul dispositivo.

Panoramica

Quando un utente esegue un'azione nella tua app, puoi chiamare l'API Play Integrity per verificare che sia avvenuta nel programma binario dell'app originale, installato da Google Play, in esecuzione su un dispositivo Android originale. Puoi anche attivare ulteriori informazioni nella risposta, tra cui il volume di richieste effettuate di recente da un dispositivo e indicatori sull'ambiente, tra cui il verdetto del rischio di accesso alle app e l'esito Play Protect. Se ci sono problemi con gli esiti, il server di backend dell'app può decidere cosa fare per difenderti da problemi quali abusi e attività fraudolente, uso improprio e imbrogli, accesso non autorizzato e attacchi.

Flusso di panoramica dell'API
Play Integrity

Considerazioni sulla sicurezza

L'API Play Integrity fornisce il massimo valore per la tua app se segui queste prassi consigliate:

Adotta una strategia anti-abuso

L'API Play Integrity funziona al meglio se utilizzata insieme ad altri indicatori nell'ambito della strategia anti-abuso generale e non come unico meccanismo anti-abuso. Utilizza questa API in combinazione con altre best practice di sicurezza appropriate per la tua app. Per impostazione predefinita, la tua app può effettuare fino a 10.000 richieste totali al giorno per tutte le installazioni. Puoi richiedere di aumentare il numero massimo giornaliero.

Raccogli dati di telemetria e comprendi il tuo pubblico prima di agire

Prima di modificare il comportamento della tua app in base agli esiti dell'API Play Integrity, puoi comprendere la situazione attuale del tuo pubblico esistente implementando l'API senza applicazione forzata. Una volta individuati gli esiti delle tue attuali installazioni attive, puoi stimare l'impatto dell'applicazione delle norme che stai pianificando e modificare di conseguenza la tua strategia anti-abuso.

Decidi come richiedere gli esiti relativi all'integrità

L'API Play Integrity offre due opzioni per richiedere e ricevere i test di integrità. A prescindere dal fatto che si effettuino richieste standard, richieste classiche o una combinazione di entrambi i tipi di richieste, la risposta sull'esito relativo all'integrità verrà restituita nello stesso formato.

Le richieste API standard sono adatte a qualsiasi app o gioco e possono essere effettuate on demand per verificare che qualsiasi azione dell'utente o richiesta del server sia autentica. Le richieste standard hanno la latenza più bassa (alcune centinaia di millisecondi in media) e un'elevata affidabilità nell'ottenere un esito utilizzabile. Le richieste standard utilizzano la memorizzazione nella cache intelligente sul dispositivo e delegano la protezione da determinati tipi di attacchi a Google Play.

Anche le richieste API classiche, il modo originale per richiedere esiti relativi all'integrità, continuano a essere disponibili. Le richieste classiche hanno una latenza maggiore (alcuni secondi in media) ed è tua responsabilità mitigare il rischio di alcuni tipi di attacchi. Le richieste classiche utilizzano più dati e batteria dell'utente rispetto alle richieste standard perché avviano una nuova valutazione e, pertanto, dovrebbero essere eseguite raramente come una tantum per verificare se un'azione molto sensibile o importante sia autentica. Se stai considerando la possibilità di effettuare una richiesta classica e di memorizzarla nella cache per utilizzarla in seguito, dovresti effettuare una richiesta standard per ridurre il rischio di attacchi.

La seguente tabella evidenzia alcune differenze fondamentali tra i due tipi di richieste:

Richiesta API standard Richiesta API classica
Versione minima dell'SDK Android obbligatoria Android 5.0 (livello API 21) o versioni successive Android 4.4 (livello API 19) o versioni successive
Preparazione dell'API obbligatoria ✔️ (pochi secondi)
Latenza tipica delle richieste Alcune centinaia di millisecondi Alcuni secondi
Frequenza potenziale delle richieste Frequente (controllo on demand di qualsiasi azione o richiesta) Non frequente (controllo una tantum delle azioni di maggior valore o delle richieste più sensibili)
Mitigare contro attacchi di ripetizione e simili Mitigazione automatica da parte di Google Play Utilizza il campo nonce con la logica lato server

Puoi visualizzare una tabella con più differenze nelle considerazioni delle richieste classiche.

Richiedi un esito relativo all'integrità al momento opportuno

Devi richiedere un esito del rischio di accesso all'app il più vicino possibile al momento dell'azione o della richiesta al server per cui vuoi difenderti dall'accesso, per evitare che i truffatori possano aggirare il controllo di integrità eseguito dalla tua app.

Rendere le richieste API difficili da replicare

Le richieste API standard hanno un campo denominato requestHash che viene utilizzato per proteggere da manomissioni e attacchi simili. In questo campo, devi includere una sintesi di tutti i valori pertinenti della richiesta dell'app. Segui le indicazioni su come utilizzare l'associazione di contenuti per proteggere le richieste standard della tua app.

Le richieste API classiche hanno un campo chiamato nonce (abbreviazione del numero una volta), utilizzato per proteggere da determinati tipi di attacchi, come gli attacchi di ripetizione e manomissione. Segui le indicazioni su come generare nonce per proteggere le richieste classiche della tua app.

Evita gli esiti relativi all'integrità della memorizzazione nella cache

Gli esiti relativi all'integrità nella cache aumentano il rischio di proxy, ovvero un attacco in cui un utente malintenzionato riutilizza un esito di un dispositivo valido per scopi illeciti in un altro ambiente. Invece di memorizzare le risposte nella cache, puoi effettuare una richiesta API standard per ottenere un esito on demand.

Avere una strategia di applicazione a più livelli

L'esito relativo all'integrità dell'API Play Integrity offre una serie di possibili risposte, che consentono di creare una strategia anti-abuso con più livelli di applicazione forzata. Per farlo, configura il server di backend dell'app in modo che si comporti in modo diverso a seconda di ogni risposta o gruppo di risposte possibile.

È anche possibile creare un livello di strategia di applicazione forzata in base all'affidabilità dei dispositivi attivando la ricezione di etichette dispositivo aggiuntive nella risposta API da Play Console. Ogni dispositivo restituirà tutte le etichette di cui soddisfa i criteri. Ad esempio, dopo aver attivato la ricezione di tutte le etichette dei dispositivi, puoi scegliere di considerare attendibile un dispositivo che restituisce MEETS_STRONG_INTEGRITY, MEETS_DEVICE_INTEGRITY e MEETS_BASIC_INTEGRITY più di un dispositivo che restituisce soltanto MEETS_BASIC_INTEGRITY. In ogni scenario puoi rispondere in modo diverso dal server.

Invia una serie di risposte dal server all'app

Avere un intervallo di risultati decisionali è più difficile da replicare rispetto all'invio di una risposta binaria Consenti/negata dal server all'app per ogni risposta. Ad esempio, puoi utilizzare una serie di risposte correlate come Consenti, Consenti con limiti, Consenti con limiti dopo il completamento del CAPTCHA e Rifiuta.

Rileva abusi su larga scala utilizzando l'attività recente del dispositivo

Usa la funzionalità Attività recente del dispositivo nell'API Play Integrity per trovare i dispositivi che richiedono un numero elevato di token di integrità. Gli utenti che abusano di attività elevate di solito generano risultati di attestazioni validi da dispositivi reali e li forniscono a bot per automatizzare gli attacchi su emulatori e dispositivi rooted. Puoi utilizzare il livello di attività recente del dispositivo per controllare quante attestazioni sono state generate dalla tua app su quel dispositivo nell'ultima ora.

Mostra messaggi di errore strategici

Se possibile, fornisci messaggi di errore utili all'utente e spiegagli cosa può fare per risolvere il problema, ad esempio riprovare, attivare la connessione a internet o controllare che l'app Play Store sia aggiornata.

Prepara un piano per interruzioni o problemi imprevisti

La dashboard dello stato di Google Play mostra le informazioni sullo stato del servizio dell'API Play Integrity e su eventuali interruzioni e interruzioni. Puoi configurare in anticipo il funzionamento del server di backend nell'improbabile caso di un'interruzione dell'API Play Integrity su larga scala.

Considerare soluzioni antifrode end-to-end aziendali

I clienti aziendali alla ricerca di una soluzione completa per la gestione di attività fraudolente e bot possono acquistare reCAPTCHA Enterprise per dispositivi mobili, che include SDK per Android che forniscono punteggi del rischio di attività fraudolenta agli sviluppatori. reCAPTCHA Enterprise include automaticamente indicatori dell'API Play Integrity e li combina con indicatori di rete e delle applicazioni per i clienti, fornendo una soluzione preconfigurata e invisibile per la gestione delle frodi. Può anche fornire protezione per le app Android in cui l'API Play Integrity non è disponibile.

Mettere in discussione il traffico rischioso quando si accede a funzionalità di alto valore o sensibili

Identifica le azioni sensibili o di alto valore nella tua app o nel tuo gioco per proteggerle con l'API Play Integrity anziché negare completamente l'accesso. Se possibile, verifica il traffico pericoloso prima di consentire il proseguimento di azioni di valore elevato. Ad esempio, se il rischio di accesso all'app indica che è in esecuzione un'app in grado di acquisire la schermata, chiedi all'utente di disabilitare o disinstallare le app in grado di acquisire la schermata prima di consentire all'utente di passare alla funzionalità che vuoi proteggere.

Termini di servizio e Sicurezza dei dati

Se accedi all'API Play Integrity o la utilizzi, accetti i Termini di servizio dell'API Play Integrity. Prima di accedere all'API, leggi e comprendi tutti i termini e le norme applicabili.

Google Play ha una sezione Sicurezza dei dati in cui gli sviluppatori possono comunicare le prassi di raccolta, condivisione e sicurezza dei dati delle loro app per tenere informati gli utenti. Per aiutarti a compilare il modulo relativo ai dati, consulta queste informazioni su come l'API Play Integrity gestisce i dati.