Attualmente sto costruendo un'app per Android che utilizza OAuth per accedere a un servizio. Con OAuth, ho bisogno di fornire un ID client e un client segreto al servizio in modo che possa identificare la mia app. In questo momento, sto memorizzando le credenziali in questo modo:
public class Creds {
public static final String CLIENT_ID = "THE_CLIENT_ID";
public static final String CLIENT_SECRET = "THE_CLIENT_SECRET";
}
Ovviamente, questo non è affatto sicuro. Chiunque può solo decompilare il file APK e vedere le stringhe all'istante. Come posso impedire alle persone di farlo?
Non considererei un offuscatore una soluzione accettabile, dal momento che chiunque compia uno sforzo sufficiente può ancora ricreare le stringhe.
nota: Questo non è un dupe di questa domanda in quanto discute come mantenere le stringhe fuori dal controllo del codice sorgente, non nascondendole all'interno del file APK. Ad esempio, un file di configurazione contenente le chiavi potrebbe essere tenuto fuori dal controllo del codice sorgente ma presente nell'APK decompilato.
modifica: Cosa succede se inserisco le stringhe nel codice nativo e le recupero tramite JNI? Il codice nativo è molto più difficile da decompilare.