it-swarm-eu.dev

Android: memorizzazione di nome utente e password?

Se voglio memorizzare il nome utente e la password da utilizzare all'interno di un'applicazione Android, qual è il modo migliore per farlo? È attraverso la schermata delle preferenze (ma cosa succede se l'utente manca questo?), O pop-up una finestra di dialogo e chiedere all'utente le credenziali? In tal caso, devo mantenere lo stato per l'applicazione. Come lo farei?

167
Legend

La maggior parte delle app Android e iPhone che ho visto utilizzano una schermata iniziale o una finestra di dialogo per richiedere le credenziali. Penso che sia ingombrante per l'utente dover reinserire spesso il proprio nome/password, quindi la memorizzazione di tali informazioni ha senso dal punto di vista dell'usabilità.

Il consiglio della ( Guida per sviluppatori Android ) è:

In generale, raccomandiamo di ridurre al minimo la frequenza di richiesta delle credenziali dell'utente - per rendere gli attacchi di phishing più evidenti e meno probabili avere successo. Utilizzare invece un token di autorizzazione e aggiornarlo.

Laddove possibile, nome utente e password non devono essere memorizzati sul dispositivo. Invece, eseguire l'autenticazione iniziale utilizzando il nome utente e la password forniti dall'utente, quindi utilizzare un token di autorizzazione di breve durata specifico per il servizio.

L'uso di AccountManger è l'opzione migliore per la memorizzazione delle credenziali. SampleSyncAdapter fornisce un esempio di come usarlo.

Se questa non è un'opzione per te per qualche motivo, puoi ricorrere alle credenziali persistenti usando il meccanismo Preferenze . Altre applicazioni non saranno in grado di accedere alle tue preferenze, quindi le informazioni dell'utente non sono facilmente esposte.

109
elevine

Penso che il modo migliore per proteggere le tue credenziali sia innanzitutto pensare di archiviare la password con crittografia nel file account.db che non potrebbe essere facilmente disponibile in dispositivi non rootati e in caso di dispositivo rootato l'hacker deve aver bisogno della chiave per decrittografare esso.

Un'altra opzione è fare tutta la tua autenticazione come il modo in cui Gmail sta facendo. dopo la prima autenticazione con il server Gmail. hai il token di autenticazione che verrebbe utilizzato in caso di password. quel token verrebbe archiviato in testo normale. Questo token potrebbe essere falso nel caso in cui si cambi la password dal server.

l'ultima opzione che ti consiglio di abilitare l'autenticazione a due fattori e creare una password specifica per il dispositivo. Dopo aver perso il dispositivo, tutto ciò che serve è disabilitare quel dispositivo.

8
Riz

È necessario utilizzare Android AccountManager . È appositamente progettato per questo scenario. È un po 'ingombrante, ma una delle cose che fa è invalidare le credenziali locali se la scheda SIM cambia, quindi se qualcuno fa scorrere il telefono e lancia una nuova SIM al suo interno, le tue credenziali non saranno compromesse.

Ciò offre inoltre all'utente un modo rapido e semplice per accedere (e potenzialmente eliminare) le credenziali archiviate per qualsiasi account che hanno sul dispositivo, il tutto da un'unica posizione.

SampleSyncAdapter (come menzionato @Miguel) è un esempio che utilizza le credenziali dell'account memorizzato.

8
Jon O

Dai un'occhiata a Qual è il modo più appropriato per memorizzare le impostazioni dell'utente in Android application se sei preoccupato di archiviare le password come testo in chiaro in SharedPreferences.

3
emmby

Questi sono classificati in in ordine di difficoltà a violare le informazioni nascoste .

  1. Conservare in chiaro

  2. Conservare crittografato utilizzando una chiave simmetrica

  3. Utilizzando il keystore Android

  4. Conservare crittografato utilizzando chiavi asimmetriche

fonte: Dov'è il posto migliore per archiviare una password nella tua app Android

Il Keystore stesso viene crittografato utilizzando il pin/password del blocco schermo dell'utente, quindi, quando lo schermo del dispositivo è bloccato, il Keystore non è disponibile. Tienilo a mente se hai un servizio in background che potrebbe aver bisogno di accedere ai tuoi segreti dell'applicazione.

fonte: sa semplicemente il keystore Android per memorizzare password e altre informazioni sensibili

2
Dmytro Melnychuk

Dai un'occhiata a questo post di sviluppatori Android, che potrebbe aiutare ad aumentare la sicurezza dei dati memorizzati nella tua app Android.

tilizzo della crittografia per archiviare le credenziali in modo sicuro

2
dwbrito

Puoi anche guardare l'esempio SampleSyncAdapter dall'SDK. Potrebbe esserti d'aiuto.

2
miguelv

Con il nuovo hardware e API (Android 6.0) per le impronte digitali puoi farlo come in this applicazione di esempio github.

2
Zlatko

Le informazioni su http://nelenkov.blogspot.com/2012/05/storing-application-secrets-in-androids.html sono abbastanza pragmatiche, ma "use-hidden-Android-apis" approccio basato. È qualcosa da considerare quando non riesci davvero ad aggirare la memorizzazione di credenziali/password localmente sul dispositivo.

Ho anche creato un riassunto di quell'idea su https://Gist.github.com/kbsriram/5503519 che potrebbe essere utile.

1
kbs