Proteggi l'ambiente

Google offre una serie di API e servizi per aiutarti a rilevare se la tua app è in esecuzione in un ambiente sicuro e attendibile. L'elemento principale è l'API Play Integrity, che consente di verificare che le interazioni siano autentiche rilevando interazioni potenzialmente pericolose e fraudolente. Oltre all'integrità dell'app e del dispositivo, l'API Play Integrity ora offre informazioni sui rischi di accesso e accessibilità, su Google Play Protect e sulle attività recenti 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

Funzionalità dell'API Play Integrity

L'API Play Integrity ti consente di conoscere lo stato di sicurezza del dispositivo su cui è in esecuzione la tua app. In questo modo hai la certezza che l'utente giusto acceda a informazioni sensibili.

Questa funzionalità ti consente di verificare che le interazioni e le richieste del server provengano dal programma binario dell'app originale in un ambiente affidabile:

  • 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, ovvero se l'utente ha installato o pagato 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.
  • Basso rischio di accesso da parte di altre app: consente di stabilire 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 attività fraudolente

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 difenderti da attacchi e attività fraudolente. Ad esempio, potresti richiedere un'ulteriore verifica dell'utente o negare l'accesso a funzionalità sensibili.

Flusso decisionale dell'API Play Integrity

Rischio di accesso all'app

È stato introdotto l'indicatore Rischio di accesso alle app per aiutarti a valutare se altre app su un dispositivo possono visualizzare e acquisire la schermata quando l'app è in esecuzione o accede all'app utilizzando le autorizzazioni di accessibilità. Le app di accessibilità verificate vengono escluse automaticamente da questi esiti. Il rischio di accesso all'app aiuta gli sviluppatori a proteggere le loro app tutelando la privacy dell'utente, perché l'app richiedente non ottiene l'identità delle app installate e il verdetto non è collegato agli identificatori dell'utente o del dispositivo.

Screenshot di uno smartphone che richiede all'utente di chiudere determinate app.

Grazie a questo impegno collaborativo, siamo in grado di ottenere gli indicatori necessari per fornirci informazioni più approfondite al fine di proteggere i nostri clienti in modo più efficace.
— Nubank, partner per l'accesso in anteprima

Il rischio di accesso all'app presenta diversi livelli di rischio:

  • Un'acquisizione di risposta significa che sono in esecuzione altre app in grado di acquisire lo schermo.
  • Una risposta "controllore" indica che sono in esecuzione altre app in grado di controllare il dispositivo, quindi potrebbero acquisire lo schermo e controllare gli input nella tua app.

Il rischio di accesso all'app è ora disponibile in versione beta pubblica e verrà reso disponibile pubblicamente nei prossimi mesi.

Applicazione del rischio di accesso alle app

Identifica azioni sensibili o di valore elevato nella tua app o nel tuo gioco da proteggere con l'API Play Integrity, anziché negare del tutto l'accesso. Se possibile, sfida il traffico pericoloso prima di consentire il completamento di azioni di alto valore. Ad esempio, se 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 in grado di acquisire la schermata prima di consentire di passare alle funzionalità che vuoi proteggere.

Questa tabella contiene alcuni esiti di esempio:

Esempio di risposta sull'esito del rischio di accesso all'app Interpretazione
appsDetected:
["KNOWN_INSTALLED"]
Sono presenti solo app installate che sono riconosciute da Google Play o precaricate sulla partizione di sistema dal produttore del dispositivo. Nessuna app in esecuzione potrebbe comportare l'acquisizione, il controllo o gli esiti in overlay.
appsDetected:
["KNOWN_INSTALLED",
"UNKNOWN_INSTALLED",
"UNKNOWN_CAPTURING"]
Sono presenti app installate da Google Play o precaricate sulla partizione di sistema dal produttore del dispositivo. Ci sono altre app in esecuzione e con le autorizzazioni abilitate che potrebbero essere utilizzate per visualizzare la schermata o acquisire altri input e output.
appsDetected:
["KNOWN_INSTALLED",
"KNOWN_CAPTURING",
"UNKNOWN_INSTALLED",
"UNKNOWN_CONTROLLING"]
È in esecuzione un sistema Play o un sistema con autorizzazioni attivate che potrebbero essere utilizzate per visualizzare la schermata o acquisire altri input e output. Esistono anche altre app in esecuzione con autorizzazioni abilitate 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é non è stato soddisfatto un requisito necessario. Ad esempio, il dispositivo non era abbastanza attendibile.

Indicatore Play Protect

L'indicatore Play Protect comunica all'app se Play Protect è attivo e se ha rilevato app dannose note installate sul dispositivo.

environmentDetails:{
  playProtectVerdict: "NO_ISSUES"
}

Se il malware rappresenta un problema particolare per la tua app o per i dati dei tuoi utenti, puoi controllare questo esito e chiedere agli utenti di attivare Play Protect o rimuovere le app dannose prima di procedere.

Finestra di dialogo Attiva Play Protect

playProtectVerdict può avere uno dei seguenti valori:

Esito Spiegazione Azione consigliata

NO_ISSUES

Play Protect è attivo e non ha rilevato alcun problema con l'app sul dispositivo.

Play Protect è attivo e non ha rilevato problemi, quindi non è richiesta alcuna azione da parte dell'utente.

NO_DATA

Play Protect è attivo, ma non è stata ancora eseguita alcuna scansione. Il dispositivo o l'app Play Store potrebbe essere stato reimpostato di recente.

Play Protect è attivo e non ha rilevato problemi, quindi non è richiesta alcuna azione da parte dell'utente.

POSSIBLE_RISK

Play Protect è disattivato.

Play Protect è attivo e non ha rilevato problemi, quindi non è richiesta alcuna azione da parte dell'utente.

MEDIUM_RISK

Play Protect è attivo e ha trovato app potenzialmente dannose installate sul dispositivo.

A seconda della tua tolleranza di rischio, puoi chiedere all'utente di avviare Play Protect e intervenire in merito agli avvisi di Play Protect. Se l'utente non è in grado di soddisfare questi requisiti, puoi bloccarlo dall'azione del server.

HIGH_RISK

Play Protect è attivo e ha trovato app pericolose installate sul dispositivo.

A seconda della tua tolleranza di rischio, puoi chiedere all'utente di avviare Play Protect e intervenire in merito agli avvisi di Play Protect. Se l'utente non è in grado di soddisfare questi requisiti, puoi bloccarlo dall'azione del server.

UNEVALUATED

L'esito di Play Protect non è stato valutato.

Questo potrebbe accadere per diversi motivi, tra cui:

  • Il dispositivo non è abbastanza attendibile.
  • Solo giochi: l'account utente non è LICENSED.

Attività del dispositivo recente

Puoi anche attivare l'attività recente del dispositivo, 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 iperattivi imprevisti che potrebbero indicare un attacco attivo. Puoi decidere quanto considerare attendibile ogni livello di attività recente del dispositivo in base a quante volte ti aspetti che l'app sia installata su un dispositivo tipico per richiedere 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 per la tua app su tutti i tuoi dispositivi. Dopodiché puoi decidere come deve rispondere la tua app quando un dispositivo effettua troppe richieste. Se l'attività è un po' troppo elevata, potresti chiedere all'utente di riprovare più tardi. Se il numero di attività è molto elevato, ti consigliamo di prendere provvedimenti più severi.

Richieste standard e classiche

Nell'ambito dell'implementazione di Play Integrity, è importante considerare i due tipi di richieste. Nella maggior parte dei casi è consigliabile utilizzare le richieste standard per fornire la risposta più rapida, mentre le richieste classiche dovrebbero 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 dovrebbero essere effettuate con meno frequenza.

Ad esempio, una tantum, per verificare se un'azione sensibile o molto redditizia è autentica.

Usalo raramente.

Le richieste sono a bassa latenza e possono essere utilizzate on demand.

Una richiesta standard è costituita da due parti:

  • Prepara il provider di token di integrità (una tantum)
  • Richiedi un token di integrità (on demand)

Utilizza on demand.

Leggi la documentazione di Play Integrity per maggiori informazioni sulle richieste standard e classice.

Implementazione

Per iniziare a utilizzare l'API Play Integrity:

Per impostazione predefinita, l'API Play Integrity consente fino a 10.000 richieste per app al giorno. Per esprimere il tuo interesse ad aumentare le richieste massime giornaliere, segui queste istruzioni. Per avere l'idoneità 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 presenti per l'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 alcuna operazione da parte dello sviluppatore prima del test né l'integrazione del server di backend.

In che modo questo contribuisce a mitigare le attività fraudolente

Quando attivi Protezione automatica dell'integrità, Google Play aggiunge controlli al codice della tua app e li rende difficili da rimuovere con 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 va a buon fine, l'app non verrà eseguita.

Questo contribuisce a proteggere gli utenti dalle versioni modificate della tua app.

Implementazione

Al momento Protezione automatica dell'integrità è disponibile solo per partner selezionati di Google Play. Contatta l'assistenza per gli sviluppatori di Google Play se la funzionalità non è disponibile in Google Play Console e vuoi esprimere il tuo interesse a ottenere l'accesso.

Puoi attivare la protezione quando crei una release o nella pagina Integrità dell'app (Release > Integrità dell'app). 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 promuoverne la release in produzione.

Da ricordare

  • Non rilasciare versioni dell'app non protette
  • Fare attenzione quando si combinano soluzioni di protezione dalle manomissioni
  • Testa l'app protetta prima di rilasciarla in produzione
  • Monitora normalmente le statistiche per rilevare eventuali aumenti degli arresti anomali
  • Puoi segnalare le versioni con crack della tua app a Google Play