Android: Ist es eine gute Idee, das Authentifizierungs-Token in den gemeinsamen Einstellungen zu speichern?
Ich habe eine Anwendung, die Kommunikation mit einem server.
Wenn der Benutzer-logins, um die Anwendung, die ein Authentifizierungs-Token befinden sich in einem Käfig auf dem server gespeichert und in die SharedPreferences
von der Anwendung und wenn die Anwendung fordert Daten von einem web service die Authentifizierung token überprüft wird.
Meine Frage ist, ist es sicher um die Authentifizierung zu speichern token in der SharedPreferences
? Ich Frage deshalb, weil ein Benutzer mit root-Berechtigungen können Sie den Zugriff auf die Einstellungen haben, extrahieren Sie die token und verwenden Sie es.
Gibt es trotzdem, um mehr Sicherheit in dieser Hinsicht?
InformationsquelleAutor der Frage Eric Bergman | 2013-10-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kurz gesagt, ja, das ist eine ganz vernünftige Sache zu tun.
Das beste, was Sie tun können, on top of, die Verschleierung nur. Wenn Sie den token in Erinnerung, ein root-Benutzer kann einen Blick in das. Wenn Sie Sie verschlüsseln, müssen Sie zum speichern der Schlüssel auf dem Gerät auch, oder Sie werden nicht in der Lage, verwenden Sie die token... und der Schlüssel gestohlen werden kann so einfach wie die token.
Wenn jemand root auf dem Gerät, sind alle Wetten ab. Nicht die Optimierung für diesen Fall. Wenn Ihre app ist super-duper-high-Sicherheit, nicht erlauben, es zu laufen, auf gerooteten Geräten, oder implementieren Sie ein remote-wipe-Funktionalität können die user berichten, dass Ihr Gerät gestohlen wurde und Sie für ungültig erklären kann das token auf dem server.
Android 4.3 eingeführt, die Android Keystore. Dass angeblich bietet einen sicheren Speicher für kryptographische Schlüssel. Dies könnte verwendet werden, zu speichern, die Schlüssel, die zum entschlüsseln einer verschlüsselten token gespeichert, mit traditionellen Methoden. Jedoch die referenzierten link gibt keine Erwähnung von wie eine verwurzelt Gerät schlägt in die Sicherheit dieser.
UPDATE 2018: die Meisten modernen Android-Geräte haben hardware-backed-keystoresüber ein trusted execution environment (TEE) zur Verfügung gestellt von der SoC. Dies macht es unmöglich (siehe unten) für hacker erhalten Sie das keystore-master-Schlüssel, die sonst benötigt werden, zu entschlüsseln, die Schlüssel, die Sie gespeichert haben, das im Android-Keystore.
Nun, "unmöglich" ist ein starkes Wort. Es ist besser gesagt als "nicht machbar". Das bedeutet, Sie brauchen so etwas wie ein Elektronenmikroskop zur Abtastung der bits verschmolzen in der SoC bietet dem TEE. Wenn Sie die Art von person, deren Daten garantiert diese Art von Aufmerksamkeit, die Sie wahrscheinlich größere Probleme haben.
InformationsquelleAutor der Antwort Jeffrey Blattman
Wenn es die Sorge, dass das token sein könnte, Lesen SharedPreferences, eine gute Faustregel ist, um eine bestimmte Stufe der Verschlüsselung der gespeicherten Daten.
Diese Reaktion stellt eine einfache Klasse, um Daten zu verschlüsseln:
Was ist der beste Weg zum speichern der Benutzer-Einstellungen in der Android-Anwendung
InformationsquelleAutor der Antwort jdev