Google offre una serie di API e servizi per aiutarti a rilevare se la tua app è in esecuzione 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à delle app e dei dispositivi, 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 sia l'utente corretto ad accedere 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 o meno, 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: consente di stabilire se la funzionalità Google Play Protect è attiva e se ha trovato app rischiose o pericolose installate sul dispositivo.
- Rischio ridotto 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 ridurre la frode
Quando un utente esegue 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 per l'accessibilità verificate sono escluse automaticamente da questi giudizi. Il rischio di accesso alle app aiuta gli sviluppatori a proteggere le loro app preservando la privacy degli utenti perché l'app richiedente non ottiene l'identità delle app installate e il verdetto non è collegato agli identificatori di utenti o dispositivi.
Grazie a questo sforzo collaborativo, siamo in grado di ottenere gli indicatori necessari per avere informazioni più approfondite 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 la schermata.
- Una risposta di controllo indica che sono in esecuzione altre app che possono controllare il dispositivo e quindi potrebbero 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 del tutto l'accesso. Se possibile, esamina 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 esempi di giudizi:
Esempio di risposta all'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 i verdetto di acquisizione, controllo o overlay. |
appsDetected: ["KNOWN_INSTALLED", "UNKNOWN_INSTALLED", "UNKNOWN_CAPTURING"]
|
Esistono app installate da Google Play o precaricate nella partizione di sistema dal produttore del dispositivo. Sono in esecuzione altre app con autorizzazioni abilitate 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 app o sistemi con autorizzazioni abilitate 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 usate per controllare il dispositivo e gli input della tua app. |
appAccessRiskVerdict: {}
|
Il rischio di accesso all'app non è stato valutato perché manca un requisito necessario. Ad esempio, il dispositivo non era abbastanza attendibile. |
Segnale di Play Protect
L'indicatore Play Protect indica all'app se Play Protect è attivo e se ha rilevato 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 agli 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 è stata ancora 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 non è attivo. |
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 tolleranza al rischio, puoi chiedere all'utente di avviare Play Protect e di intervenire in base agli avvisi di Play Protect. Se l'utente non è in grado di soddisfare questi requisiti, puoi bloccarlo dall'azione del server. |
|
Play Protect è attivo e ha trovato app pericolose installate sul dispositivo. |
A seconda della tua tolleranza al rischio, puoi chiedere all'utente di avviare Play Protect e di intervenire in base agli avvisi di Play Protect. Se l'utente non è in grado di soddisfare questi requisiti, puoi bloccarlo dall'azione del server. |
|
Il verdetto 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 ti consente di sapere 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 iperattivi e inaspettati che potrebbero indicare un attacco attivo. Puoi decidere quanto dare credito a ogni livello di attività del dispositivo recente in base al numero di volte che prevedi che la tua app installata su un dispositivo standard richieda un token di integrità ogni ora.
Se attivi la ricezione di 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à tipici 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' elevata, ti consigliamo di chiedere all'utente di riprovare più tardi. Se l'attività è molto elevata, ti consigliamo di adottare misure di applicazione più severe.
Richieste standard e classiche
Nell'ambito dell'implementazione di Play Integrity, è importante prendere in considerazione i due tipi di richieste. Nella maggior parte dei casi, dovresti utilizzare le richieste standard per fornire la risposta più rapida. Le richieste classiche devono essere utilizzate se è necessaria una richiesta appena generata in base al record di attestazione del dispositivo.
Richiesta classica |
Richiesta standard |
---|---|
Le richieste richiedono più tempo e devono essere effettuate meno di frequente. Ad esempio, come operazione una tantum occasionale per verificare se un'azione di grande valore o sensibile è autentica. Utilizzo non frequente. |
Le richieste hanno una bassa latenza e possono essere utilizzate on demand. Una richiesta standard è costituita da due parti:
Utilizza on demand. |
Leggi la documentazione di Play Integrity per saperne di più sulle richieste standard e classiche.
Implementazione
Per iniziare a utilizzare l'API Play Integrity:
- Attiva le risposte dell'API Play Integrity in Google Play Console e collegalo a un progetto Google Cloud.
- Integra l'API Play Integrity nella tua app.
- Decidi come gestire i verdetti.
Per impostazione predefinita, l'API Play Integrity consente fino a 10.000 richieste al giorno per app. Per esprimere il tuo interesse ad aumentare il numero massimo di richieste giornaliere, segui queste istruzioni. Per poter richiedere 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 presenti per l'API Play Integrity
- È essenziale gestire gli errori nelle risposte delle API Play Integrity in modo appropriato. Segui la guida qui sulle strategie di ripetizione dei tentativi e applicazione basate sui 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 best practice 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 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 ridurre la frode
Quando attivi la 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 nella tua Play Console e vuoi esprimere il tuo interesse per ottenerne l'accesso.
Puoi attivare la protezione quando crei una release o nella pagina Integrità dell'app (Release > Integrità dell'app). La 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 il rilascio in produzione.
Da ricordare
- Non rilasciare versioni di app non protette
- Fare attenzione quando si combinano soluzioni di protezione dalle manomissioni
- Testa l'app protetta prima di rilasciarla in produzione
- Monitora le statistiche come di consueto per verificare eventuali aumenti degli arresti anomali
- Puoi segnalare a Google Play le versioni con crack della tua app