it-swarm.com.de

Android: Speichern von Benutzername und Passwort?

Wenn ich den Benutzernamen und das Passwort für die Verwendung in einer Android) -Anwendung speichern möchte, wie gehe ich am besten vor? Wird dies über den Bildschirm "Einstellungen" durchgeführt (aber was, wenn der Benutzer dies übersieht?). ), oder rufen Sie ein Dialogfeld auf und fragen Sie den Benutzer nach den Anmeldeinformationen. Wenn ja, muss ich den Status für die Anwendung beibehalten. Wie würde ich das tun?

170
Legend

Die meisten Android und iPhone-Apps, die ich gesehen habe, verwenden einen Startbildschirm oder ein Dialogfeld, um nach Anmeldeinformationen zu fragen. Ich halte es für umständlich, wenn der Benutzer seinen Namen/sein Kennwort häufig erneut eingeben muss. Daher ist das Speichern dieser Informationen unter dem Gesichtspunkt der Benutzerfreundlichkeit sinnvoll.

Der Rat des ( Android dev guide ) lautet:

Im Allgemeinen empfehlen wir, die Häufigkeit der Abfrage von Benutzeranmeldeinformationen zu minimieren, um Phishing-Angriffe auffälliger und mit geringerer Wahrscheinlichkeit erfolgreicher zu machen. Verwenden Sie stattdessen ein Autorisierungstoken und aktualisieren Sie es.

Benutzername und Passwort sollten nach Möglichkeit nicht auf dem Gerät gespeichert werden. Führen Sie stattdessen die Erstauthentifizierung mit dem vom Benutzer angegebenen Benutzernamen und Kennwort durch und verwenden Sie dann ein kurzlebiges, dienstspezifisches Autorisierungstoken.

Die Verwendung von AccountManger ist die beste Option zum Speichern von Anmeldeinformationen. Der SampleSyncAdapter enthält ein Beispiel für die Verwendung.

Wenn dies aus irgendeinem Grund für Sie keine Option ist, können Sie mithilfe des Einstellungen -Mechanismus auf dauerhafte Anmeldeinformationen zurückgreifen. Andere Anwendungen können nicht auf Ihre Einstellungen zugreifen, sodass die Informationen des Benutzers nicht leicht zugänglich sind.

110
elevine

Ich denke, die beste Möglichkeit, um Ihre Anmeldeinformationen zu sichern, besteht darin, zunächst das Kennwort mit Verschlüsselung in der Datei account.db zu speichern, die auf nicht gerooteten Geräten nicht ohne weiteres verfügbar ist. Im Falle eines gerooteten Geräts muss der Hacker den Schlüssel zum Entschlüsseln benötigen es.

Eine andere Option ist, die gesamte Authentifizierung wie in Google Mail durchzuführen. nach der ersten Authentifizierung beim Google Mail-Server. Sie haben das Auth-Token erhalten, das im Falle Ihres Passworts verwendet werden würde. Dieses Token wird im Nur-Text-Format gespeichert. Dieses Token kann falsch sein, falls Sie das Kennwort vom Server aus ändern.

als letzte Option empfehle ich Ihnen, die 2-Faktor-Authentifizierung zu aktivieren und ein gerätespezifisches Kennwort für Ihr Gerät zu erstellen. Nachdem Sie das Gerät verloren haben, müssen Sie es nur noch deaktivieren.

8
Riz

Sie sollten Android AccountManager verwenden. Es wurde speziell für dieses Szenario entwickelt. Es ist ein bisschen umständlich, aber eines der Dinge, die es tut, ist, die lokalen Anmeldeinformationen ungültig zu machen, wenn das Die SIM-Karte wird gewechselt. Wenn also jemand Ihr Telefon auswählt und eine neue SIM-Karte einlegt, werden Ihre Anmeldeinformationen nicht beeinträchtigt.

Dies gibt dem Benutzer auch eine schnelle und einfache Möglichkeit, von einem Ort aus auf die gespeicherten Anmeldeinformationen für jedes Konto zuzugreifen (und diese möglicherweise zu löschen).

SampleSyncAdapter (wie @Miguel erwähnt) ist ein Beispiel, das gespeicherte Kontoanmeldeinformationen verwendet.

8
Jon O

Werfen Sie einen Blick auf Was ist die am besten geeignete Methode zum Speichern von Benutzereinstellungen in Android application , wenn Sie Passwörter als Klartext in SharedPreferences speichern möchten.

3
emmby

Diese sind nach Schwierigkeitsgrad geordnet , um Ihre verborgenen Informationen zu brechen .

  1. Im Klartext speichern

  2. Mit einem symmetrischen Schlüssel verschlüsselt speichern

  3. Verwenden Sie den Android Keystore

  4. Mit asymmetrischen Schlüsseln verschlüsselt speichern

quelle: Wo ist der beste Ort, um ein Passwort in Ihrer Android App zu speichern

Der Keystore selbst wird mit der PIN/dem Kennwort des Benutzers für den Sperrbildschirm verschlüsselt. Wenn der Gerätebildschirm gesperrt ist, ist der Keystore daher nicht verfügbar. Denken Sie daran, wenn Sie einen Hintergrunddienst haben, der möglicherweise auf Ihre Anwendungsgeheimnisse zugreifen muss.

quelle: Verwenden Sie einfach den Android Keystore zum Speichern von Passwörtern und anderen vertraulichen Informationen

2

Schauen Sie sich diesen Beitrag von Android-Entwicklern an, um die Sicherheit der gespeicherten Daten in Ihrer Android App zu erhöhen.

Verwenden von Kryptografie zum sicheren Speichern von Anmeldeinformationen

2
dwbrito

Sie können sich auch das Beispiel SampleSyncAdapter aus dem SDK ansehen. Es kann dir helfen.

2
miguelv

Mit der neuen (Android 6.0) Fingerprint-Hardware und API können Sie dies wie in this Github-Beispielanwendung tun.

2
Zlatko

Die Info unter http://nelenkov.blogspot.com/2012/05/storing-application-secrets-in-androids.html ist ziemlich pragmatisch, aber "uses-hidden-Android-apis". basierter Ansatz. Dies ist eine Überlegung wert, wenn Sie das lokale Speichern von Anmeldeinformationen/Kennwörtern auf dem Gerät wirklich nicht umgehen können.

Ich habe auch eine Übersicht über diese Idee unter https://Gist.github.com/kbsriram/5503519 erstellt, die hilfreich sein könnte.

1
kbs