2011-01-12 5 views
9

Sto utilizzando l'API Dropbox. Nell'applicazione di esempio, include queste righe:Memorizzare le chiavi API in Android, è sufficiente l'ostruzione?

// Replace this with your consumer key and secret assigned by Dropbox. 
// Note that this is a really insecure way to do this, and you shouldn't 
// ship code which contains your key & secret in such an obvious way. 
// Obfuscation is good. 
final static private String CONSUMER_KEY = "PUT_YOUR_CONSUMER_KEY_HERE"; 
final static private String CONSUMER_SECRET = "PUT_YOUR_CONSUMER_SECRET_HERE"; 

Sono ben consapevole del mantra 'La segretezza non è la sicurezza', e offuscamento davvero solo leggermente aumenta la quantità di sforzo richiesto per estrarre le chiavi. Non sono d'accordo con la loro affermazione "L'obiezione è buona". Cosa dovrei fare per proteggere le chiavi, allora? È buona norma dell'onorificenza o dovrei considerare qualcosa di più elaborato?

+2

Leggere la discussione su questo argomento qui: https://groups.google.com/d/topic/android-developers/quD5gYIZ4Ig/discussion –

risposta

5

Non puoi farci niente. Se l'utente (utente malintenzionato) ha i dati protetti e il codice che esegue la protezione, l'utente può eventualmente accedere ai dati. E 'così semplice. Un debugger e un breakpoint al momento giusto sono tutto ciò di cui hanno bisogno. Quello e molto tempo libero e determinazione.

Se la segretezza è sufficiente per i vostri scopi dipende dalle vostre specifiche aziendali. Ma generalmente nel mondo mobile, se il cliente è preoccupato che i suoi dati vengano rubati, implementano controlli di alto livello di furto e perdita. Cose come cancellazione remota, blocco schermo obbligatorio, ecc. Non penso che sia compito del programmatore dell'applicazione duplicare tutte quelle cose.

2

La sicurezza non può mai essere perfetta, quindi spetta a te decidere quanto lavoro vuoi fare. Puoi rompere il segreto del consumatore in più stringhe per una semplice modifica che offre una minima quantità di sicurezza aggiuntiva o puoi creare un algoritmo per rappresentare il segreto in un altro modo (qualsiasi cosa dall'inserimento di caratteri che non vengono utilizzati ogni X spazi nella stringa per modificare ciascun carattere, magari in base alla rappresentazione numerica).

Devi considerare il lavoro e il vantaggio. Se questa è un'applicazione che tu e alcuni amici userete, allora probabilmente non importa molto. Se questa sarà un'app utilizzata da 10 milioni di persone, la sicurezza è ovviamente più preoccupante.