2016-03-21 10 views
0

Ich habe eine iOS App, die über einen RESTful Web Service mit einer Datenbank von PDF Dokumenten synchronisiert wird. Grundsätzlich lädt die App einige PDFs herunter, die ich in meiner App im Dateisystem ablege.iOS Secure File Storage Problem

Ich verwende das Verzeichnis Bibliothek/Caches.

Meine Anforderung ist, die Dateien so zu speichern, dass der Benutzer in keiner Weise auf sie zugreifen kann. Wenn ich die Datei zu schreiben, ich sende auch die Option: NSDataWritingFileProtectionComplete

[decodedFile writeToFile:newFilePath options:NSDataWritingFileProtectionComplete error:nil]; 

Allerdings bin ich noch in der Lage, die Dateien durch Geräte zugreifen -> wählen Meine App -> Download Container ...

I Sie müssen die App so konfigurieren, dass auf den heruntergeladenen Inhalt nur die App selbst zugreifen kann. Es muss einen Weg geben, dies zu tun, aber ich konnte nichts finden ...?

Antwort

0

Dies ist kein lösbares Problem. Wenn dies ein lösbares Problem wäre, dann wäre es für Apple einfach, Jailbreaking zu verhindern. Sie würden einfach einen Systemvalidierungsschlüssel an jedem Ort schreiben, auf den der Benutzer nicht zugreifen kann. Die Tatsache, dass Jailbreaking möglich ist, obwohl Apple jeden Teil des Ökosystems kontrolliert, sollte Ihre Chancen, Daten zu schützen, die Sie von diesem Benutzer auf das Gerät eines Benutzers geschrieben haben, relativieren.

Dies wurde mehrmals diskutiert, einschließlich Gedanken darüber, was Sie tatsächlich tun können und was es wert ist (nichts wird 100% sein; nichts wird sogar 90% sein). Sie können die vorherigen Inkarnationen dieser Frage für mehr betrachten. Secure https encryption for iPhone app to webpage ist ein guter Anfang, da es Links zu mehreren anderen enthält.

+0

Danke für die Info. Ich kümmere mich nicht um jailbroken Instanzen. Ich möchte es nur für nicht-jailbroken Instanzen schwieriger oder sogar im Idealfall unmöglich machen. Ich verstehe, dass es immer einen Weg gibt, aber einfach das Telefon mit dem Mac verbinden und in Xcode gehen und die Möglichkeit haben, die Dokumente in 2 Minuten herunterzuladen, ist inakzeptabel. Es muss einen Weg geben. Ich werde mir die Links ansehen, die du zur Verfügung gestellt hast ... – Jesse

+0

Wenn es das Ziel ist, es "ein bisschen härter zu machen", dann ist es ziemlich trivial (im Gegensatz zu "kann auf keinen Fall Zugang zu ihnen bekommen", was unmöglich ist). Verschlüsseln Sie die Daten mit einem zufälligen Schlüssel, den Sie in Ihrer App verbergen. Wer stark mit moderaten Fähigkeiten motiviert ist, wird es schaffen, es zu brechen, aber es wird für die Fälle funktionieren, die Sie beschreiben. Ich weiß, dass viele Teams RNCryptor auf diese Weise verwenden. https://github.com/RNCryptor –

+1

Eigentlich, was ich getan habe, ist noch trivialer ... auf der Serverseite, wo die PDF hinzugefügt wird, füge ich ein Passwort zum Dokument hinzu. In der iOS App verwende ich das gleiche Passwort, um das Dokument zu öffnen. Wenn jemand die Dateien ablegen würde, würden sie das Passwort nicht kennen. Problem gelöst. – Jesse