I segreti delle app sono legati al "flusso di autenticazione del server Web" (in particolare OAuth2), ovvero il modo in cui un server esegue l'autenticazione all'altro che è autorizzato ad accedere alle risorse fornite dal server. Puoi considerarlo come una "password di autorizzazione", in cui la password consente al servizio di chiamata di accedere al servizio che viene chiamato.
I client mobili non devono essere considerati attendibili e non dovrebbero mai utilizzare un'app secret; questo è un rischio intrinseco per la sicurezza, in quanto può consentire a un app dannoso di accedere al servizio. Una volta che un'app segreta è in circolazione, il servizio deve essere modificato per impedire alle app dannose di abusare del servizio per conto degli utenti.
Si noti che non è possibile utilizzare gli attacchi di riproduzione con OAuth2 perché utilizza un numero casuale per salare ogni transazione, sebbene il problema della decompilazione sia ancora molto importante. Infatti, ci sono stati articoli scritti sull'estrema numero di app Android vulnerabili a causa della perdita di segreti delle app.
Una volta che hai un'app segreta, puoi emulare l'app a cui corrisponde la chiave segreta e non puoi distinguere tra un'app pubblicata e autorizzata e un clone dannoso. Molti sviluppatori non capiscono che il segreto dell'app è l'equivalente di una password o di una chiave di crittografia privata e devono essere trattati come tali.
I client mobili e altre app non attendibili (app basate sul browser web) devono utilizzare il "flusso di autenticazione del client utente", in cui viene utilizzata solo la chiave dell'app.