Wir haben hier eine interessante Diskussion über das Löschen von Dateien auf iOS-Geräten. Die Frage war: Wenn ich eine Datei mit NSFileManager lösche, was passiert dann unter der Haube?
Nach meinem Verständnis erfolgt das Löschen durch Entfernen des entsprechenden Dateieintrags aus der Dateisystemtabelle.
Das Gegenargument ist, dass ein Dateihandle in irgendeiner Weise erhalten bleibt und nur ein Flag gesetzt wird, das die Datei als gelöscht markiert. Wenn der Benutzer Root-Zugriff auf das iOS-Gerät hatte, konnte er dieses Flag möglicherweise zurücksetzen und den Dateiinhalt wiederherstellen.
In beiden Fällen stimmen wir zu, dass der eigentliche Dateiinhalt nicht überschrieben wird und die einfachen Bytes noch auf dem Flash-Speicher / der Flash-Festplatte vorhanden sind, bis der Block von einer anderen Datei belegt wird.
Die Idee ist jetzt: Wenn die zweite Version wahr ist, können wir die Datei vor dem Löschen mit einem 1-Byte-Inhalt überschreiben (selbst wenn dieses Byte an einen neuen Speicherort auf dem Flash-Laufwerk geschrieben wird, ohne den alten Inhalt tatsächlich zu überschreiben). Wenn die Datei dann wiederhergestellt wird, ist nur der überschriebene 1-Byte-Inhalt verfügbar.
Beachten Sie, dass es sich nicht um eine forensische Analyse des Flash-Laufwerks handelt, mit der möglicherweise der ursprüngliche Dateiinhalt wiederhergestellt werden könnte.
Um es noch einmal zusammenzufassen:
- Wie funktioniert das Löschen einer Datei unter iOS intern?
- Verhindert der Überschreibungsansatz das Löschen?