SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Beste Option zum Speichern von Benutzername und Passwort in der Android-App

Ja, das ist schwierig auf Android. Sie möchten das Klartext-Passwort nicht in den Einstellungen speichern, da jeder mit einem gerooteten Gerät sein Passwort grundsätzlich der Welt anzeigt. Auf der anderen Seite können Sie kein verschlüsseltes Passwort verwenden, da Sie Ihren Verschlüsselungs-/Entschlüsselungsschlüssel irgendwo auf dem Gerät speichern müssten, was wiederum anfällig für den Root-Angriff ist.

Eine Lösung, die ich vor einiger Zeit verwendet habe, besteht darin, den Server ein "Ticket" erstellen zu lassen, das er an das Gerät zurückgibt, was für einen bestimmten Zeitraum gültig ist. Dieses Ticket wird vom Gerät für die gesamte Kommunikation verwendet, natürlich mit SSL, damit niemand Ihr Ticket stehlen kann. Auf diese Weise authentifiziert der Benutzer sein Passwort einmal auf dem Server, der Server sendet ein ablaufendes Ticket zurück und das Passwort wird niemals irgendwo auf dem Gerät gespeichert.

Mehrere dreibeinige Authentifizierungsmechanismen wie OpenID, Facebook und sogar Google-APIs verwenden diesen Mechanismus. Die Nachteile sind, dass sich der Benutzer hin und wieder neu anmelden muss, wenn das Ticket abläuft.

Letztendlich hängt es davon ab, wie sicher Ihre Anwendung sein soll. Wenn dies nur dazu dient, Benutzer zu unterscheiden, und keine supergeheimen Informationen wie Bankkonten oder Blutgruppen gespeichert werden, ist es vielleicht in Ordnung, die PWD im Klartext auf dem Gerät zu speichern :)

Viel Glück, welche Methode Sie auch immer für Ihre spezielle Situation am besten wählen!

Bearbeiten:Ich sollte beachten, dass diese Technik die Verantwortung für die Sicherheit auf den Server überträgt - Sie sollten gesalzene Hashes für den Passwortvergleich auf dem Server verwenden, eine Idee, die Sie in einigen der anderen Kommentare zu dieser Frage sehen werden. Dadurch wird verhindert, dass das Klartext-Passwort irgendwo außer in der EditText-Ansicht auf dem Gerät, der SSL-Kommunikation mit dem Server und dem RAM des Servers erscheint, während das Passwort gesalzt und gehasht wird. Es wird nie auf der Festplatte gespeichert, was eine gute Sache™ ist.