L'API Play Integrity ti aiuta a controllare che le azioni degli utenti e le richieste del server provengano dalla tua app originale, installata da Google Play ed eseguita su un dispositivo Android originale e certificato. Rilevando interazioni rischiose, come quelle provenienti da versioni dell'app manomesse, dispositivi non attendibili o ambienti emulati, il server di backend può rispondere con azioni appropriate per prevenire abusi e accessi non autorizzati, contrastare le attività fraudolente, combattere i comportamenti illeciti e proteggere gli utenti dagli attacchi.
L'API restituisce esiti che ti aiutano a rilevare potenziali minacce, tra cui:
- Accesso non autorizzato: l'esito
accountDetailsti aiuta a stabilire se l'utente ha installato o acquistato l'app o il gioco su Google Play. - Manomissione del codice: l'esito
appIntegrityti aiuta a stabilire se stai interagendo con il tuo file binario non modificato riconosciuto da Google Play. - Dispositivi rischiosi e ambienti emulati: l'esito
deviceIntegrityti aiuta a stabilire se la tua app è installata o meno su un dispositivo Android originale e certificato o su un'istanza originale di Google Play Games per PC.
Gli sviluppatori di Google Play possono anche scegliere di ricevere esiti aggiuntivi per rilevare una gamma più ampia di potenziali minacce, tra cui:
- Dispositivi senza patch: la risposta
MEETS_STRONG_INTEGRITYnell'esitodeviceIntegrityti aiuta a stabilire se un dispositivo ha applicato gli aggiornamenti di sicurezza recenti (per i dispositivi con Android 13 e versioni successive). - Accesso rischioso da parte di altre app:l'esito
appAccessRiskVerdictti aiuta a stabilire se sono in esecuzione app che potrebbero essere utilizzate per acquisire la schermata, mostrare overlay o controllare il dispositivo (ad esempio, utilizzando in modo improprio l'autorizzazione di accessibilità). - Malware noti:l'esito
playProtectVerdictti aiuta a stabilire se la funzionalità Google Play Protect è attiva e se ha trovato app rischiose o pericolose installate sul dispositivo. - Iperattività:il livello
recentDeviceActivityti aiuta a stabilire se un dispositivo ha effettuato di recente un volume di richieste anomalo, il che potrebbe indicare traffico automatizzato e potrebbe essere un segnale di attacco. - Abusi ripetuti e dispositivi riutilizzati:
deviceRecall(beta) ti aiuta a stabilire se stai interagendo con un dispositivo che hai contrassegnato in precedenza, anche se la tua app è stata reinstallata o il dispositivo è stato ripristinato.
L'API può essere utilizzata su tutti i fattori di forma Android, inclusi smartphone, tablet, dispositivi pieghevoli, Android Auto, Android TV, Android XR, ChromeOS, Wear OS e Google Play Games per PC.
Considerazioni sulla sicurezza
L'API Play Integrity offre il massimo valore per la tua app quando segui queste pratiche consigliate:
Sviluppa una strategia anti-abuso
L'API Play Integrity funziona in modo ottimale quando usata insieme ad altri indicatori in quanto parte della tua strategia generale contro i comportamenti illeciti e non come unico meccanismo anti-abuso. Utilizza questa API insieme ad 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 in tutte le installazioni. Puoi richiedere di aumentare il numero massimo giornaliero.
Raccogli dati di telemetria e comprendi il tuo pubblico prima di intraprendere azioni
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 che sai quali esiti restituisce la tua base di installazioni attive attuale, puoi stimare l'impatto di qualsiasi applicazione forzata 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 esiti relativi all'integrità. Indipendentemente dal fatto che tu effettui richieste standard, richieste classiche o una combinazione di entrambi i tipi di richieste, la risposta dell'esito relativo all'integrità verrà restituita nello stesso formato.
Le richieste API standard sono adatte a qualsiasi app o gioco e possono essere effettuate su richiesta per verificare che qualsiasi azione dell'utente o richiesta del server sia originale. Le richieste standard hanno la latenza più bassa (in media poche centinaia di millisecondi) e un'elevata affidabilità nell'ottenere un esito utilizzabile. Le richieste standard utilizzano la memorizzazione nella cache intelligente sul dispositivo, delegando al contempo la protezione da determinati tipi di attacchi a Google Play.
Le richieste API classiche, il modo originale per richiedere esiti relativi all'integrità, continuano a essere disponibili. Le richieste classiche hanno una latenza più elevata (in media pochi secondi) e la responsabilità di mitigare il rischio di determinati tipi di attacchi è a tuo carico. Le richieste classiche utilizzano più dati e batteria dell'utente rispetto alle richieste standard perché avviano una nuova valutazione, pertanto devono essere effettuate raramente come controllo una tantum per verificare se un'azione o una richiesta altamente sensibile o di valore è originale. Se stai valutando di effettuare una richiesta classica e di memorizzarla nella cache per utilizzarla in un secondo momento, ti consigliamo di effettuare una richiesta standard per ridurre il rischio di attacchi.
La tabella seguente evidenzia alcune differenze chiave tra i due tipi di richieste:
| Richiesta API standard | Richiesta API classica | |
|---|---|---|
| SDK Android minimo richiesto* | Android 6.0 (livello API 23) o versioni successive | Android 6.0 (livello API 23) o versioni successive |
| Riscaldamento dell'API richiesto | ✔️ (pochi secondi) | ❌ |
| Latenza tipica delle richieste | Poche centinaia di millisecondi | Pochi secondi |
| Frequenza potenziale delle richieste | Frequente (controllo su richiesta per qualsiasi azione o richiesta) | Rara (controllo una tantum per le azioni di valore più elevato o le richieste più sensibili) |
| Mitigazione degli attacchi di riproduzione e simili | Mitigazione automatica da parte di Google Play | Utilizza il campo nonce con la logica lato server |
* Per la libreria dell'API Play Integrity v1.4.0 e versioni successive, l'SDK Android minimo
supportato è lo stesso per entrambi i tipi di richieste ed è determinato da
minSdkVersion della libreria. Per le release v1.3.0 e precedenti, l'SDK Android minimo richiesto è Android 5.0 (livello API 21) per le richieste API standard e
Android 4.4 (livello API 19) per le richieste API classiche.
Puoi consultare una tabella con ulteriori differenze nelle considerazioni sulle richieste classiche.
Richiedi un esito relativo all'integrità in un momento appropriato
Ti consigliamo di richiedere un esito relativo al rischio di accesso all'app il più vicino possibile al momento dell'azione o della richiesta del server che vuoi proteggere dall'accesso, per impedire ai truffatori di aggirare il controllo di integrità eseguito dalla tua app.
Rendi difficili da replicare le richieste API
Le richieste API standard hanno un campo denominato requestHash che viene utilizzato per proteggere da manomissioni e attacchi simili. In questo campo, devi includere un digest di tutti i valori pertinenti della richiesta della tua app. Segui le indicazioni su
come utilizzare l'associazione dei contenuti
per proteggere le richieste standard della tua app.
Le richieste API classiche hanno un campo denominato nonce (abbreviazione di number once) che viene utilizzato per proteggere da determinati tipi di attacchi, come gli attacchi di riproduzione e manomissione. Segui le indicazioni su come generare
i nonce per proteggere le richieste classiche della tua app.
Evita di memorizzare nella cache gli esiti relativi all'integrità
La memorizzazione nella cache degli esiti relativi all'integrità aumenta il rischio di proxying, ovvero un attacco in cui un malintenzionato riutilizza un esito di un dispositivo valido per scopi illeciti in un altro ambiente. Anziché memorizzare nella cache le risposte, puoi effettuare una richiesta API standard per ottenere un esito su richiesta.
Adotta una strategia di applicazione forzata a più livelli
L'esito relativo all'integrità dell'API Play Integrity ha una gamma di possibili risposte che consentono di creare una strategia anti-abuso con più livelli di applicazioni forzate. Puoi farlo configurando il server di backend della tua app in modo che si comporti in modo diverso a seconda di ogni possibile risposta o gruppo di risposte.
Prima di valutare l'attendibilità del dispositivo, è essenziale controllare gli altri indicatori principali nella risposta dell'API:
- Dettagli della richiesta:assicurati che
requestDetailscorrispondano ai valori previsti, in particolare verificandorequestHashononceper impedire gli attacchi di riproduzione. - Integrità dell'app:verifica che
appRecognitionVerdictsiaPLAY_RECOGNIZED, confermando che il certificato di firma dell'app sia riconosciuto da Play e non sia stato manomesso. - Dettagli account:verifica che
appLicensingVerdictsiaLICENSED, confermando che l'utente ha installato o aggiornato l'app da Google Play.
La tua app deve essere in grado di gestire i casi in cui questi controlli di base non vengono superati, ad esempio, utilizzando la finestra di dialogo di correzione di Play in-app. Inoltre, la tua app deve essere in grado di gestire i codici di errore che potrebbero verificarsi durante la richiesta.
Una volta superati i controlli di base, è possibile classificare la strategia di applicazione forzata
in base all'attendibilità del dispositivo
scegliendo di ricevere etichette di dispositivo aggiuntive nella risposta dell'API
da Play Console. Ogni dispositivo restituirà tutte le etichette i cui criteri soddisfa. Per ottenere la versione dell'SDK Android, devi utilizzare il campo deviceAttributes incluso nella risposta dell'API.
L'ampiezza dei livelli di attendibilità del dispositivo varia da dispositivi più attendibili a dispositivi meno attendibili:
MEETS_STRONG_INTEGRITY(Android 13 e versioni successive): il livello di attendibilità del dispositivo più elevato, che richiede segnali di sicurezza con crittografia hardware e una patch di sicurezza recente.MEETS_DEVICE_INTEGRITY(Android 13 e versioni successive) eMEETS_STRONG_INTEGRITY(versioni precedenti ad Android 13): il livello di attendibilità successivo. Entrambi si basano su indicatori di sicurezza basati sull'hardware.MEETS_DEVICE_INTEGRITY(versioni precedenti ad Android 13): il livello successivo, che utilizza l'attestazione con crittografia hardware quando disponibile e l'attestazione basata sul software come fallback.MEETS_BASIC_INTEGRITY: il livello di attendibilità più basso, appena prima di non ricevere affatto etichette del dispositivo.
Ad esempio, dopo aver scelto di ricevere tutte le etichette del dispositivo, potresti scegliere di considerare più attendibile un dispositivo che restituisce MEETS_STRONG_INTEGRITY, MEETS_DEVICE_INTEGRITY e MEETS_BASIC_INTEGRITY rispetto a un dispositivo che restituisce solo MEETS_BASIC_INTEGRITY. Puoi rispondere in modo diverso dal server in ogni scenario.
Puoi quindi aggiungere altri indicatori alla tua strategia di applicazione forzata a più livelli, ad esempio trattando i dispositivi come meno attendibili che restituiscono livelli più elevati in recentDeviceActivity.
Invia una serie di risposte dal server alla tua app
È più difficile replicare una serie di risultati decisionali rispetto all'invio di una risposta binaria Consenti/Nega 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 Nega.
Rileva abusi ripetuti utilizzando il richiamo del dispositivo, preservando al contempo la privacy dell'utente
Il richiamo del dispositivo consente alle app di archiviare e recuperare alcuni dati personalizzati associati a un dispositivo specifico in modo da preservare la privacy dell'utente. I dati vengono archiviati sui server di Google, consentendo all'app di richiamare in modo affidabile i dati su ogni dispositivo anche dopo la reinstallazione dell'app o il ripristino del dispositivo. In questo modo puoi identificare in modo affidabile un dispositivo che hai trovato illecito in passato, in modo da poter intraprendere azioni e impedirne l'utilizzo per abusi. Puoi definire il significato dei tre valori che compongono i dati di richiamo del dispositivo:
- Puoi utilizzarli come massimo tre indicatori o valori booleani separati. Ad esempio, i valori potrebbero indicare se un dispositivo ha o meno creato un account, se ha o meno utilizzato una prova senza costi o se è o meno noto per abusi di gravità elevata.
- In alternativa, puoi combinare tutti gli stati dei valori in un massimo di otto etichette personalizzate, ad esempio un'etichetta per lo stato predefinito quando tutti e tre i valori non sono modificati e sette etichette con significati personalizzati. In questo modo puoi segmentare tutti i dispositivi in un massimo di otto gruppi in base ai comportamenti o alle azioni che definisci. In questo scenario, la data più recente dei tre
writeDatesindica l'ultima volta che hai aggiornato l'etichetta.
Tieni presente anche i prerequisiti e altre considerazioni quando utilizzi i dati di richiamo del dispositivo.
Rileva abusi su larga scala utilizzando l'attività recente del dispositivo
Utilizza la funzionalità di attività recente del dispositivo nell'API Play Integrity per trovare i dispositivi che richiedono un numero elevato di token di integrità. I malintenzionati che effettuano attività di volume elevato in genere generano risultati di attestazione validi da dispositivi reali e li forniscono ai bot per automatizzare gli attacchi su dispositivi con root e emulatori. Puoi utilizzare il livello di attività recente del dispositivo per verificare quante attestazioni sono state generate dalla tua app su quel dispositivo nell'ultima ora.
Mostra messaggi di errore utili
Quando possibile, fornisci messaggi di errore utili all'utente per consentirgli di sapere cosa può fare per risolvere il problema, ad esempio riprovare, attivare la connessione a internet o verificare che l'app Play Store sia aggiornata.
Pianifica in caso di problemi o interruzioni imprevisti
La dashboard dello stato di Play mostra informazioni sullo stato del servizio dell'API Play Integrity, nonché informazioni su eventuali interruzioni e interruzioni del servizio. Ti consigliamo di pianificare in anticipo il modo in cui vuoi che il server di backend funzioni nell'improbabile eventualità di un'interruzione su larga scala dell'API Play Integrity. Tieni presente che il server di backend deve essere pronto a funzionare anche nel caso in cui vengano revocate le chiavi di attestazione della chiave della piattaforma Android specifiche per i dispositivi.
Valuta le soluzioni di prevenzione delle frodi aziendali end-to-end
I clienti aziendali che cercano una soluzione completa di gestione di frodi e bot possono acquistare reCAPTCHA Enterprise per dispositivi mobili, che include SDK per Android che forniscono agli sviluppatori punteggi di rischio di frode. reCAPTCHA Enterprise include automaticamente gli indicatori dell'API Play Integrity e li combina con gli indicatori di rete e applicazione reCAPTCHA per i clienti, fornendo una soluzione di gestione delle frodi invisibile e senza attriti. Può anche fornire protezione per le app Android in cui l'API Play Integrity non è disponibile.
Metti alla prova il traffico rischioso quando accedi a funzionalità sensibili o di valore elevato
Identifica le azioni sensibili o di valore elevato nella tua app o nel tuo gioco da proteggere con l'API Play Integrity anziché negare l'accesso. Quando possibile, metti alla prova il traffico rischioso prima di consentire l'esecuzione di azioni di valore elevato. Ad esempio, quando il rischio di accesso all'app indica che è in esecuzione un'app che potrebbe acquisire la schermata, chiedi all'utente di disattivare o disinstallare le app che possono acquisire la schermata prima di consentirgli di accedere 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. Leggi e comprendi tutti i termini e le norme applicabili prima di accedere all'API.
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 dei dati, consulta queste informazioni su come l'API Play Integrity gestisce i dati.