2016-07-20 7 views
3

Was ist der beste Weg, um Daten (z. B. Passwörter) zu speichern, die der Benutzer nicht manipulieren oder sehen kann? NSUserDefaults werden in einer Datei auf dem Mac gespeichert, die der Benutzer manipulieren und sehen kann. Wie wäre es mit Core Data? Wird dies auch in einer Datei gespeichert oder gibt es eine Möglichkeit, dass der Benutzer die Core Data sehen kann?Core Data oder NSUserDefaults, um Manipulationen des Benutzers zu vermeiden?

+2

den Schlüsselbund verwenden - https://developer.apple.com/library/mac/documentation/ Sicherheit/Konzeptionelle/keychainServConcepts/iPhoneTasks/iPhoneTasks.html – pds

+1

Ja, Kern-Dateien können leicht zugegriffen werden. Die beste Lösung besteht darin, die Daten zu verschlüsseln, die Sie benötigen. –

+0

gibt es ein großes Wrapper für den Schlüsselbund https://cocoapods.org/pods/SSKeychain – markedwardmurray

Antwort

12

NSUserDefaults sollte definitiv nicht zum Speichern von Passwörtern verwendet werden, da es im Klartext gespeichert ist. Core-Daten können verschlüsselt werden, sind jedoch standardmäßig nicht verfügbar. Es speichert alle seine Daten in einer SQLite-Datenbank, die wirklich leicht zu lesen ist. Passwörter sollten im System Schlüsselbund gespeichert werden. Auf den Schlüsselbund kann mit der Security Framework zugegriffen werden.

Es gibt mehrere Bibliotheken, die die Verwendung des Schlüsselbunds erleichtern, zB: Locksmith oder Valet.

1

Neben dem Vorschlag von @esthepiking, Schlüsselbund zu verwenden, sollten Sie sich bewusst sein, dass die Implementierung Ihrer eigenen Verschlüsselung zum Speichern von Kennwörtern zu mehr Verpflichtungen unter den "Export Compliance" -Anforderungen des App Stores führen kann. Siehe hierzu post.

0

können Sie diese link siehe das Beispiel bekommen ios verwenden Keychain Dienstleistungen zu speichern und den Benutzernamen und das Passwort abrufen sicher