Abbiamo un'interessante discussione qui sulla cancellazione dei file sui dispositivi iOS. La domanda era: se elimino un file utilizzando NSFileManager, cosa succede sotto il cofano?
La mia comprensione è che l'eliminazione viene eseguita rimuovendo la voce di file corrispondente dalla tabella del file system.
L'argomento contatore è che un handle di file rimane in qualche modo e viene impostato solo un flag che contrassegna il file come eliminato. Se l'utente avesse accesso root al dispositivo iOS, potrebbe potenzialmente reimpostare quel flag e recuperare il contenuto del file.
In entrambi i casi concordiamo che il contenuto del file effettivo non verrà sovrascritto e che i byte semplici esistano ancora sulla memoria / disco flash fino a quando il blocco non viene occupato da un altro file.
L'idea è ora: se la seconda versione è vera, potremmo sovrascrivere il file con un contenuto di un byte prima dell'eliminazione (anche se quel byte viene scritto in una nuova posizione sull'unità flash senza sovrascrivere effettivamente il vecchio contenuto). Se quindi il file viene ripristinato, è disponibile solo il contenuto di un byte sovrascritto.
Si noti che non stiamo parlando di analisi forensi dell'unità flash che potrebbero forse ripristinare il contenuto del file originale.
Quindi, per ricapitolare:
- Come funziona la cancellazione di un file su iOS internamente?
- L'approccio di sovrascrittura previene l'annullamento?