2013-05-28 7 views
48

Wo sollte ich Tokens speichern, wenn der Benutzer sich bei einem Dienst anmeldet? Ich speichere keine Passwörter (offensichtlich, wo ich den Schlüsselbund verwenden würde), sondern nur das Token. Viele Orte sagen nur NSUserDefaults, aber einige Leute auf StackOverflow scheinen wirklich scharf auf den Schlüsselbund.Speichern von Authentifizierungs-Tokens auf iOS - NSUserDefaults vs Keychain?

Ist NSUserDefaults in Ordnung?

+3

Daten, die mit 'NSUserDefaults' gespeichert wurden, sind auch auf einem nicht-jailbroken Gerät leicht lesbar. Wenn Ihnen Sicherheit wichtig ist, würde ich die Daten im Schlüsselbund speichern. Wie lange planen Sie, Ihr Authentifizierungs-Token zu erhalten? –

+0

Sie können grundlegende Idee auf swift3 Implementierung erhalten von [hier] (https://gist.github.com/anishparajuli555/dedfdd4aea836de49ac52d13a45a8f84) –

Antwort

72

Ich würde empfehlen Sie den Schlüsselbund verwenden - es ist genau das, was für die Speicherung ihrer Session-Token Facebook tun.

NSUserDefaults ist nicht sicher oder verschlüsselt - es leicht zu öffnen und lesen, sowohl auf dem Gerät und wenn sie auf einem Mac synchronisiert. Während User-Defaults ein guter Platz für Dinge wie Präferenzen und Konfigurationsinformationen sind, ist es kein guter Ort für sensible Dinge wie Passwörter.

Session-Token sollte fast immer die gleiche wie Passwörter behandelt, so sollten Sie sie sicher im Schlüsselbund speichern, wo sie verschlüsselt werden, werden. Apple hat einen Beispielcode (GenericKeychain), der eine grundlegende Implementierung zeigt. Weitere Beispiele finden Sie in StackOverflow. Hoffe das hat dir geholfen.

+2

Dies ist eine großartige Antwort. Auch in der Dokumentation von NSUserDefault. Es besagt, dass die Klasse für Einstellungen gedacht ist, nicht zum Speichern sicherer Anmeldeinformationen. – Tony

+0

Hier ist ein weiterer SO mit einer großen Bibliothek fädeln KeyChain Zugang zur Vereinfachung: http://stackoverflow.com/a/13641196/380837 – Jaroslav

20

Es lohnt sich bei der Suche Lockbox verwenden. Es vereinfacht die Anbindung an den Schlüsselbund erheblich.

+6

[UICKeyChainStore] (https://github.com/kishikawakatsumi/UICKeyChainStore) auch einen Ruf wert. – lukestringer90

+1

Stimmen Sie mit @Mike überein, Lockbox hat das Problem für mich stark vereinfacht. –

Verwandte Themen