Ich habe bisher hauptsächlich kleinere Apps und Spiele für Android erstellt, aber ich erschaffe jetzt eine ziemlich große App mit vielen Benutzern und sensibleren Daten als ein Highscore.User Authentification on Android - Sicherheitsimplementierung
Mein normaler Ansatz war, nur eine Tabelle für alle Benutzer mit Kennwörtern zu haben, mit einem einfachen Anmeldebildschirm mit einem HTTP (S) Anruf authentifizieren und das war's.
Es gibt ein paar Dinge, die ich, obwohl für diese App verbessern möchten:
Sichere Übertragung
Wenn ich das Kennwort des Benutzers verschlüsseln wollen, wo ich es tun müssen? Auf dem Gerät, bevor es überhaupt gesendet wird? (Im Falle von unsicheren Netzwerken, wie einem öffentlichen WiFi Hotspot) Oder besser auf dem Server, bevor Sie es in die DB schreiben? Oder sollte ich nur die SQL-Verschlüsselung verwenden?
Auto Login
Ich mag Benutzer in der Lage sein, um eingeloggt zu bleiben, bis das Protokoll aus - wie würde ich das am besten tun? Nicht nur in Bezug auf die Sicherheit, sondern auch für die Benutzerfreundlichkeit.
Meine Untersuchung zeigt mir, dass die Verwendung des AccountManager am besten wäre, den Benutzernamen und das Passwort zu speichern und sich automatisch zu authentifizieren, wenn die App gestartet wird. Ist da noch etwas dran, irgendwelche Sicherheitsrisiken, die mir hier fehlen?
Zutrittskontrolle
Normalerweise würde ich erwarten, dass nur jeder von einer App gemacht Anruf gültig, da ein Benutzer nicht alles, aber der Login-Bildschirm in ohne Anmeldung zugreifen können. Aber wie ich am besten authentifizieren die Anfrage eines Benutzers, um sicherzustellen, dass es sich nicht um einen Angreifer handelt? Ich kann nicht einfach den Benutzernamen/ID mit jeder Anfrage senden, also brauche ich wahrscheinlich ein Sitzungstoken, das ich bei jeder Anmeldung erstelle? Oder gibt es eine bessere Methode?
Gibt es noch etwas, an das ich vergessen habe?
Danke für den Rat, obwohl ich mir nicht ganz sicher bin, was ich sonst tun kann, um jeden davon abzuhalten, Anfragen zu stellen - wenn sie sich nicht einloggen können, bekommen sie kein Token und können nichts tun, Recht? –
Ja, genau.Eine andere Lösung wäre, signiertes APK zu generieren und Schlüssel aus Keystore zu verwenden, um Anforderungen an Ihre API zu signieren. Dann könnten Sie alle nicht autorisierten Anfragen aufgeben. –
gute Idee, danke! –