Wenn ich den Benutzernamen und das Passwort speichern möchte, die in einer Android-Anwendung verwendet werden sollen, wie geht das am besten? Ist es über den Einstellungsbildschirm (aber was ist, wenn der Benutzer dies verpasst?) Oder öffnen Sie ein Dialogfeld und fragen Sie den Benutzer nach den Anmeldeinformationen? Wenn ja, muss ich den Status für die Anwendung beibehalten. Wie würde ich das machen?
android
authentication
storage
credentials
Legende
quelle
quelle
Antworten:
Die meisten Android- und iPhone-Apps, die ich gesehen habe, verwenden einen Startbildschirm oder ein Dialogfeld, um nach Anmeldeinformationen zu fragen. Ich denke, es ist umständlich für den Benutzer, seinen Namen / sein Passwort häufig erneut eingeben zu müssen. Daher ist das Speichern dieser Informationen aus Sicht der Benutzerfreundlichkeit sinnvoll.
Der Rat aus dem ( Android Dev Guide ) lautet:
Die Verwendung des AccountManger ist die beste Option zum Speichern von Anmeldeinformationen. Der SampleSyncAdapter bietet ein Beispiel für die Verwendung.
Wenn dies aus irgendeinem Grund für Sie keine Option ist, können Sie mithilfe des Einstellungsmechanismus auf persistente Anmeldeinformationen zurückgreifen . Andere Anwendungen können nicht auf Ihre Einstellungen zugreifen, sodass die Benutzerinformationen nicht leicht verfügbar sind.
quelle
AccountManager
(gemäß meiner Antwort und @ Miguel auf Umwegen) verwenden und jemand Ihr GSM-Telefon in die Hand nimmt, muss er weiterhin Ihre SIM-Karte verwenden, um Zugriff auf Ihre Konten zu erhalten, da dadurch gespeicherte Anmeldeinformationen ungültig werden wenn sich die SIM ändert.Sie sollten den Android AccountManager verwenden . Es wurde speziell für dieses Szenario entwickelt. Es ist etwas umständlich, aber eines der Dinge, die es tut, ist, die lokalen Anmeldeinformationen ungültig zu machen, wenn sich die SIM-Karte ändert. Wenn also jemand Ihr Telefon klaut und eine neue SIM-Karte hineinwirft, werden Ihre Anmeldeinformationen nicht gefährdet.
Dies gibt dem Benutzer auch eine schnelle und einfache Möglichkeit, von einem Ort aus auf die gespeicherten Anmeldeinformationen für jedes Konto auf dem Gerät zuzugreifen (und diese möglicherweise zu löschen).
SampleSyncAdapter (wie @Miguel erwähnt) ist ein Beispiel, das gespeicherte Kontoanmeldeinformationen verwendet.
quelle
Ich denke, der beste Weg, um Ihre Anmeldeinformationen zu sichern, besteht darin, zuerst das Kennwort mit Verschlüsselung in der Datei account.db zu speichern, die auf nicht gerooteten Geräten nicht leicht verfügbar sein kann. Bei gerooteten Geräten muss der Hacker den Schlüssel zum Entschlüsseln benötigen es.
Eine andere Möglichkeit besteht darin, Ihre gesamte Authentifizierung wie bei Google Mail durchzuführen. nach der ersten Authentifizierung beim Google Mail-Server. Sie haben das Auth-Token erhalten, das im Falle Ihres Passworts verwendet wird. Dieses Token wird im Klartext gespeichert. Dieses Token kann falsch sein, wenn Sie das Kennwort vom Server ändern.
Als letzte Option würde ich Ihnen empfehlen, die 2-Faktor-Authentifizierung zu aktivieren und ein gerätespezifisches Kennwort für Ihr Gerät zu erstellen. Nach dem Verlust des Geräts müssen Sie das Gerät nur noch deaktivieren.
quelle
Sehen Sie sich an , wie Benutzereinstellungen in Android-Anwendungen am besten gespeichert werden können, wenn Sie Passwörter als Klartext in SharedPreferences speichern möchten.
quelle
Sie können sich auch das SampleSyncAdapter- Beispiel aus dem SDK ansehen . Es kann Ihnen helfen.
quelle
Schauen Sie sich diesen Beitrag von Android-Entwicklern an, um die Sicherheit der in Ihrer Android-App gespeicherten Daten zu erhöhen.
Verwenden der Kryptografie zum sicheren Speichern von Anmeldeinformationen
quelle
Mit der neuen Fingerabdruckhardware und API (Android 6.0) können Sie dies wie in dieser Github-Beispielanwendung tun .
quelle
Diese sind nach Schwierigkeitsgrad geordnet, um Ihre versteckten Informationen zu zerstören .
Im Klartext speichern
Mit einem symmetrischen Schlüssel verschlüsselt speichern
Verwenden des Android Keystore
Mit asymmetrischen Schlüsseln verschlüsselt speichern
Quelle: Wo kann man ein Passwort am besten in der Android-App speichern?
Quelle: Verwenden Sie einfach den Android Keystore, um Passwörter und andere vertrauliche Informationen zu speichern
quelle
Die Informationen unter http://nelenkov.blogspot.com/2012/05/storing-application-secrets-in-androids.html sind ein ziemlich pragmatischer, aber auf "Verwendete-versteckte-Android-Apis" basierender Ansatz. Es ist etwas zu beachten, wenn Sie wirklich nicht darum herumkommen können, Anmeldeinformationen / Passwörter lokal auf dem Gerät zu speichern.
Ich habe auch unter https://gist.github.com/kbsriram/5503519 einen bereinigten Kern dieser Idee erstellt , der hilfreich sein könnte.
quelle