SQLite
 sql >> Database >  >> RDS >> SQLite

La migliore opzione per memorizzare nome utente e password nell'app Android

Sì, questo è complicato su Android. Non vuoi memorizzare la password in chiaro nelle preferenze, perché chiunque disponga di un dispositivo rooted fondamentalmente mostrerà la propria password al mondo. D'altra parte, non puoi utilizzare una password crittografata, perché dovresti archiviare la tua chiave di crittografia/decrittografia da qualche parte sul dispositivo, ancora suscettibile all'attacco root.

Una soluzione che ho usato tempo fa è fare in modo che il server generi un "biglietto" che ritrasmette al dispositivo, il che è buono per un certo periodo di tempo. Questo biglietto viene utilizzato dal dispositivo per tutte le comunicazioni, ovviamente utilizzando SSL in modo che le persone non possano rubare il tuo biglietto. In questo modo, l'utente autentica la propria password sul server una volta, il server restituisce un ticket in scadenza e la password non viene mai archiviata in nessun punto del dispositivo.

Diversi meccanismi di autenticazione a tre vie, come OpenID, Facebook e persino le API di Google, utilizzano questo meccanismo. Gli svantaggi sono che ogni tanto, quando il ticket scade, l'utente deve effettuare nuovamente il login.

In definitiva, dipende da quanto vuoi che sia sicura la tua applicazione. Se questo è semplicemente per distinguere gli utenti e nessuna informazione super-segreta viene memorizzata come conti bancari o gruppi sanguigni, forse salvare la PWD in chiaro sul dispositivo va bene :)

Buona fortuna, qualunque metodo tu decida è il migliore per la tua situazione particolare!

Modifica:dovrei notare che questa tecnica trasferisce la responsabilità della sicurezza al server:ti consigliamo di utilizzare hash salati per il confronto delle password sul server, un'idea che vedrai in alcuni degli altri commenti per questa domanda. Ciò impedisce che la password in testo normale appaia ovunque tranne che nella vista EditText sul dispositivo, la comunicazione SSL con il server e la RAM del server mentre esegue il salt e l'hashing della password. Non viene mai archiviato su disco, il che è una buona cosa™.