2016-07-26 6 views
1

Ich möchte ein Schlüsselwertpaar sehr sicher im Gerät speichern. Aber ich möchte die Daten bis App in der Gegenwart im Gerät persistieren. Sobald App gelöscht wird, sollten diese Daten ebenfalls entfernt werden.Daten sicher im Gerät speichern, bis App in iOS vorhanden ist

NSUserdefault ist nicht sehr sicher.

Keychain ist eine weitere Option, da es sicher ist, aber persistent Daten auch nach App wird vom Gerät gelöscht werden.

Wie soll ich fortfahren? Irgendwelche Hilfe?

+0

Haben Sie an andere Optionen gedacht? – Wain

+0

Vorschlag: Einen [Fehlerbericht] (http://bugreport.apple.com) für eine * Verbesserungsanforderung einreichen, um eine "Entfernen nach Löschen" -Option zu Schlüsselketteneinträgen hinzuzufügen. – zaph

Antwort

2

Erstellen Sie einen zufälligen Verschlüsselungsschlüssel. Speichern Sie den Verschlüsselungsschlüssel im Schlüsselbund. Verschlüsseln Sie die Daten mit dem Verschlüsselungsschlüssel. Speichern Sie die verschlüsselten Daten, wo immer es in den Verzeichnissen der App möglich ist. Wenn Sie es bei Wiederherstellungen beibehalten möchten, speichern Sie es an einem Speicherort, der gesichert wurde (z. B. Bibliotheks-/Anwendungsunterstützung oder in NSUserDefaults). Wenn Sie nicht möchten, dass es bei Wiederherstellungen beibehalten wird, speichern Sie es in der Bibliothek/den Caches (Sie müssen möglicherweise einige Nachforschungen anstellen; "das System kann das Caches-Verzeichnis in seltenen Fällen löschen, wenn das System sehr wenig Speicherplatz hat") Es besteht die Gefahr, die Daten zu verlieren, aber im Falle einer Wiederherstellung mussten Sie sich damit auseinandersetzen). Sie können auch NSURLIsExcludedFromBackupKey verwenden, um eine Sicherung zu vermeiden.

Wenn die App gelöscht wird, werden die verschlüsselten Daten gelöscht. Sie werden den zufälligen Schlüssel im Schlüsselbund belassen, aber dies ist nur eine zufällige Zahl ohne Wert.

0

Ich habe eine Flagge verwendet, die in keychain gespeichert ist, die auf wahr gesetzt wird, wann immer App zum ersten Mal gestartet wird.

  1. Wenn meine App zum ersten Mal gestartet wird, wird diese Flagge nicht angezeigt. Ich werde diese Flagge im Schlüsselbund mit Wert true speichern und ich werde meine sicheren Informationen im Schlüsselbund speichern.
  2. Wenn meine Anwendung zum ersten Mal gestartet wird und Flag vorhanden ist, dann werde ich die Fahne und Daten zuerst löschen und dann mit Schritt 1.

Auf diese Weise gehen, ich habe mein Problem gelöst App verwendet die bereits gespeicherten Daten im Schlüsselbund auch nach dem erstmaligen Installieren und Starten. Wenn der Benutzer die App löscht, wird der Schlüsselbund meine sicheren Daten enthalten, aber das wird nutzlos sein, da es mit einem zufälligen Schlüssel verschlüsselt ist.