Google offre una serie di API e servizi per aiutarti a rilevare se la tua app viene eseguita in un ambiente sicuro e attendibile. Il fulcro è l'API Play Integrity, che aiuta a verificare che le interazioni siano autentiche rilevando quelle potenzialmente rischiose e fraudolente. Oltre all'integrità di app e dispositivo, l'API Play Integrity ora offre informazioni su rischi di accesso e accessibilità, Google Play Protect e attività recente del dispositivo. Per rafforzare ulteriormente la tua strategia antifrode, la piattaforma Android offre API per scenari specifici che potrebbero essere pertinenti per la tua app.
API Play Integrity
L'API Play Integrity ti consente di conoscere lo stato di sicurezza del dispositivo su cui è in esecuzione l'app. In questo modo puoi avere la certezza che l'utente giusto acceda alle informazioni sensibili.
Ti aiuta a verificare che le interazioni e le richieste del server provengano dal programma binario dell'app originale in un ambiente attendibile:
- 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 è autorizzato, ossia 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.
- Senza malware noti: determina se Google Play Protect è attivo e se ha trovato app rischiose o pericolose installate sul dispositivo.
- Rischio basso di accesso da parte di altre app: determina se sono in esecuzione altre app che potrebbero acquisire la schermata o controllare il dispositivo e gli input nella tua app.
In che modo questo contribuisce a mitigare le frodi
Quando un utente compie un'azione importante nella tua app, puoi chiamare l'API Play Integrity. In caso contrario, il server di backend dell'app può decidere cosa fare per difendersi da attacchi e frodi. Ad esempio, potresti richiedere un'ulteriore verifica dell'utente o negare l'accesso a funzionalità sensibili.

Rischio di accesso all'app
L'indicatore Rischio di accesso all'app è stato introdotto per aiutarti a valutare se altre app su un dispositivo potrebbero visualizzare e acquisire lo schermo quando la tua app è in esecuzione o accedere alla tua app utilizzando le autorizzazioni di accessibilità. Le app di accessibilità verificate vengono escluse automaticamente da questi verdetti. Il rischio di accesso alle app aiuta gli sviluppatori a proteggere le proprie app preservando la privacy degli utenti, perché l'app richiedente non ottiene l'identità delle app installate e il verdetto non è collegato a identificatori di utenti o dispositivi.
Grazie a questo sforzo collaborativo, siamo in grado di ottenere gli indicatori necessari per approfondire le nostre conoscenze e proteggere i nostri clienti in modo più efficace.
— Nubank, partner per l'accesso in anteprima
Il rischio di accesso all'app ha diversi livelli di rischio:
- Una risposta di acquisizione indica che sono in esecuzione altre app che possono acquisire lo schermo.
- Una risposta di controllo indica che sono in esecuzione altre app che possono controllare il dispositivo e quindi possono acquisire lo schermo e controllare gli input nella tua app.
Applicazione del rischio di accesso all'app
Identifica le azioni sensibili o di alto valore nella tua app o nel tuo gioco da proteggere con l'API Play Integrity anziché negare l'accesso in modo assoluto. Se possibile, metti in discussione il traffico rischioso prima di consentire l'esecuzione di azioni di alto valore. Ad esempio, quando il rischio di accesso all'app indica che è in esecuzione un'app che potrebbe acquisire lo schermo, chiedi all'utente di disattivare o disinstallare le app che possono acquisire lo schermo prima di consentirgli di procedere alla funzionalità che vuoi proteggere.
Questa tabella contiene alcuni verdetti di esempio:
| Esempio di risposta dell'esito del rischio di accesso all'app | Interpretazione |
|---|---|
appsDetected:["KNOWN_INSTALLED"]
|
Sono installate solo app riconosciute da Google Play o precaricate nella partizione di sistema dal produttore del dispositivo. Non sono in esecuzione app che potrebbero comportare l'acquisizione, il controllo o la visualizzazione di overlay. |
appsDetected:["KNOWN_INSTALLED","UNKNOWN_INSTALLED","UNKNOWN_CAPTURING"]
|
Sono installate app da Google Play o precaricate sulla partizione di sistema dal produttore del dispositivo. Sono in esecuzione altre app con autorizzazioni attive che potrebbero essere utilizzate per visualizzare lo schermo o acquisire altri input e output. |
appsDetected:["KNOWN_INSTALLED","KNOWN_CAPTURING","UNKNOWN_INSTALLED","UNKNOWN_CONTROLLING"]
|
Sono in esecuzione Play o il sistema con autorizzazioni attive che potrebbero essere utilizzate per visualizzare lo schermo o acquisire altri input e output. Sono in esecuzione anche altre app con autorizzazioni attive che potrebbero essere utilizzate per controllare il dispositivo e controllare direttamente gli input nella tua app. |
appAccessRiskVerdict: {}
|
Il rischio di accesso all'app non viene valutato perché mancava un requisito necessario. Ad esempio, il dispositivo non era abbastanza attendibile. |
Segnale di Play Protect
Il segnale Play Protect indica alla tua app se Play Protect è attivo e se ha trovato app dannose note installate sul dispositivo.
environmentDetails:{
playProtectVerdict: "NO_ISSUES"
}
Se il malware è un problema particolare per la tua app o per i dati dei tuoi utenti, puoi controllare questo verdetto e chiedere ai tuoi utenti di attivare Play Protect o rimuovere le app dannose prima di procedere.

playProtectVerdict può avere uno dei seguenti valori:
| Esito | Spiegazione | Azione consigliata |
|---|---|---|
|
Play Protect è attivo e non ha rilevato problemi con le app sul dispositivo. |
Play Protect è attivo e non ha rilevato problemi, quindi non è richiesta alcuna azione da parte dell'utente. |
|
Play Protect è attivo, ma non è ancora stata eseguita alcuna scansione. Il dispositivo o l'app Play Store potrebbero essere stati reimpostati di recente. |
Play Protect è attivo e non ha rilevato problemi, quindi non è richiesta alcuna azione da parte dell'utente. |
|
Play Protect è disattivato. |
Play Protect è attivo e non ha rilevato problemi, quindi non è richiesta alcuna azione da parte dell'utente. |
|
Play Protect è attivo e ha trovato app potenzialmente dannose installate sul dispositivo. |
A seconda della tua propensione al rischio, puoi chiedere all'utente di avviare Play Protect e intervenire sugli avvisi di Play Protect. Se l'utente non può soddisfare questi requisiti, puoi bloccarlo dall'azione del server. |
|
Play Protect è attivo e ha trovato app pericolose installate sul dispositivo. |
A seconda della tua propensione al rischio, puoi chiedere all'utente di avviare Play Protect e intervenire sugli avvisi di Play Protect. Se l'utente non può soddisfare questi requisiti, puoi bloccarlo dall'azione del server. |
|
L'esito di Play Protect non è stato valutato. Questo potrebbe accadere per diversi motivi, tra cui:
|
Attività del dispositivo recente
Puoi anche attivare l'attività del dispositivo recente, che indica quante volte la tua app ha richiesto un token di integrità su un dispositivo specifico nell'ultima ora. Puoi utilizzare l'attività recente del dispositivo per proteggere la tua app da dispositivi inaspettati e iperattivi che potrebbero indicare un attacco in corso. Puoi decidere il livello di attendibilità di ciascun livello di attività recente del dispositivo in base al numero di volte in cui prevedi che la tua app installata su un dispositivo tipico richieda un token di integrità ogni ora.
Se scegli di ricevere recentDeviceActivity, il campo deviceIntegrity avrà due valori:
deviceIntegrity: {
deviceRecognitionVerdict: ["MEETS_DEVICE_INTEGRITY"]
recentDeviceActivity: {
// "LEVEL_2" is one of several possible values.
deviceActivityLevel: "LEVEL_2"
}
}
Innanzitutto, devi controllare i dati per vedere quali sono i livelli di attività del dispositivo per la tua app su tutti i tuoi dispositivi. Poi, puoi decidere come deve rispondere la tua app quando un dispositivo effettua troppe richieste. Se l'attività è un po' alta, potresti chiedere all'utente di riprovare più tardi. Se l'attività è molto elevata, potresti voler intraprendere un'azione di applicazione più severa.
Richieste standard e classiche
Nell'ambito dell'implementazione di Play Integrity, è importante considerare i due tipi di richieste. Nella maggior parte dei casi, devi utilizzare le richieste standard, per fornire la risposta più rapida. Le richieste classiche devono essere utilizzate quando è necessaria una richiesta appena generata rispetto al record di attestazione del dispositivo.
Richiesta classica |
Richiesta standard |
|---|---|
Le richieste richiedono più tempo e devono essere effettuate meno frequentemente. Ad esempio, come controllo occasionale una tantum per verificare se un'azione sensibile di alto valore è autentica. Uso non frequente. |
Le richieste sono a bassa latenza e possono essere utilizzate on demand. Una richiesta standard è composta da due parti:
Utilizza on demand. |
Per saperne di più sulle richieste standard e classiche, leggi la documentazione di Play Integrity.
Implementazione
Per iniziare a utilizzare l'API Play Integrity:
- Attiva le risposte dell'API Play Integrity in Google Play Console e collegale a un progetto Google Cloud.
- Integra l'API Play Integrity nella tua app.
- Decidi come gestire le decisioni.
Per impostazione predefinita, l'API Play Integrity consente fino a 10.000 richieste al giorno per app. Per esprimere interesse ad aumentare il numero massimo di richieste giornaliere, segui queste <x0A>istruzioni. Per avere diritto a un aumento del numero massimo giornaliero di richieste, la tua app deve implementare correttamente l'API Play Integrity ed essere disponibile su Google Play oltre che su eventuali altri canali di distribuzione.
Aspetti da tenere presente per l'API Play Integrity
- È essenziale gestire gli errori nelle risposte delle API Play Integrity in modo appropriato. Segui la guida disponibile qui sulle strategie di ripetizione dei tentativi e applicazione in base ai codici di errore.
- L'API Play Integrity offre strumenti di test per le risposte.
- Per visualizzare il risultato dell'integrità dal tuo dispositivo, segui questi passaggi.
- Leggi queste considerazioni sulla sicurezza per le pratiche consigliate per l'utilizzo dell'API Play Integrity.
Protezione automatica dell'integrità (API >= 23)
Protezione automatica dell'integrità è un servizio di protezione del codice anti-manomissione che protegge la tua app da abusi dell'integrità sotto forma di modifiche e ridistribuzione non autorizzate. Funziona senza una connessione dati e non richiede alcun intervento da parte dello sviluppatore prima del test né l'integrazione del server di backend.
In che modo questo contribuisce a mitigare le frodi
Quando attivi Protezione automatica dell'integrità, Google Play aggiunge controlli al codice della tua app e li rende difficili da rimuovere tramite tecniche avanzate di offuscamento e anti-reverse engineering. In fase di runtime, la protezione controlla se la tua app è stata manomessa o ridistribuita:
- Se il controllo del programma di installazione non viene superato, agli utenti verrà chiesto di scaricare la tua app da Google Play
- Se il controllo delle modifiche non viene superato, l'app non verrà eseguita
In questo modo, gli utenti sono protetti dalle versioni modificate della tua app.
Implementazione
Al momento, la Protezione automatica dell'integrità è disponibile solo per partner di Google Play selezionati. Contatta l'assistenza per gli sviluppatori di Google Play se la funzionalità non è disponibile in Google Play Console e vuoi manifestare il tuo interesse ad accedervi.
Puoi attivare la protezione quando crei una release o nella pagina Protetto con Play. Protezione automatica dell'integrità richiede che la tua app utilizzi la firma dell'app di Google Play.
Assicurati di testare l'app protetta prima di promuovere la release in produzione.
Da ricordare
- Non rilasciare versioni di app non protette
- Fare attenzione quando si combinano soluzioni di protezione dalle manomissioni
- Testare l'app protetta prima di rilasciarla in produzione
- Monitora le statistiche come di consueto per rilevare eventuali aumenti degli arresti anomali
- Puoi segnalare le versioni con crack della tua app a Google Play