2012-06-13 31 views
6

¿Alguien sabe una buena solución PHP para eliminar o borrar mejor un archivo de un sistema Linux?Eliminación segura con PHP 5.3.x

Escenario: El archivo está encriptado y guardado, cuando se solicita una descarga el archivo se copia en una carpeta temporal y se descifra. Esto ya está funcionando.

¿Pero cómo eliminar el archivo de la ubicación temporal después de enviarlo al usuario?

En mi mente tengo las siguientes opciones:

  • abrir el archivo a través de "fopen" y escribir en él 0,1 (pensar muy lento)
  • Guardar archivo a Memcache en lugar de disco duro (podría ser un problema con mi proveedor de alojamiento)
  • uso de herramientas pary tercera SOMD en la línea de comandos o como tarea programada (podría ser un problema para instalar)

Objetivo: Eliminar el archivo desde el disco duro, sin la posibilidad de recuperar (limpiar/o verwrite)

+1

¿No se puede descifrar sobre la marcha y enviarlo en lugar de crear un archivo temporal? –

+0

¿Cuál es el problema para resolver aquí? La seguridad ya es lo suficientemente difícil para hacerlo bien cuando sabes * exactamente * lo que quieres. – Jon

+0

Lo primero que se piensa que surge es el uso de unlink() [link] (http://php.net/manual/en/function.unlink.php), que incluso puedes usar con md5(). Sin embargo, esto no es una limpieza y no es la mejor solución. Tal vez intente shell_exec()? – AleksanderKseniya

Respuesta

7

llamada "shred" a través de exec/sistema/tránsito

5

Podría decirse que lo mejor es no guardar el archivo en su estado descifrado en el primer lugar.

En su lugar, utilice stream filters para descifrarlo sobre la marcha y enviarlo directamente al usuario final.

actualización

Su opción 1 no es en realidad tan mal si se tiene en cuenta este código:

$filename = 'path/to/file'; 
$size = filesize($filename); 

$src = fopen('/dev/zero', 'rb'); 
$dest = fopen('/path/to/file', 'wb'); 

stream_copy_to_stream($src, $dest, $size); 

fclose($src); 
fclose($dest); 

se podía elegir /dev/urandom también, pero que va a ser lento.

Cuestiones relacionadas