2012-06-13 62 views
6

有人知道一個好的PHP解決方案來刪除或更好地從Linux系統擦除文件?用PHP 5.3.x安全刪除

場景: 當請求下載文件被複制到臨時文件夾並解密時,文件被加密並保存。這已經在工作。

但是如何在發送給用戶後從臨時位置刪除文件?

在我的腦海裏,我有以下選項:通過「的fopen」

  • 打開文件,並寫入0,1進去(認爲非常慢)
  • 保存文件到內存緩存而不是硬盤(可與我的主機供應商的問題)在命令行或作爲的cronjob
  • 使用SOMD 3 pary工具(可能是安裝問題)

目標:刪除硬盤上的文件,而無需恢復的可能性(擦拭/ O verwrite)

+1

難道你不能解密和發送,而不是創建一個臨時文件? –

+0

這裏要解決什麼問題?當你知道*正確*你想要的東西時,安全已經很難達到正確的水平。 – Jon

+0

首先想到的是使用unlink()[link](http://php.net/manual/en/function.unlink.php),你甚至可以使用md5()。但是,這不是一種擦拭,它不是最好的解決方案。也許嘗試shell_exec()? – AleksanderKseniya

回答

5

可以說是最好是永遠不會將文件保存在其解密狀態擺在首位。

相反,使用stream filters即時解密並直接發送給最終用戶。

更新

你的選項1實際上是不是太糟糕,如果你考慮下面的代碼:

$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); 

你可以選擇/dev/urandom爲好,但將是緩慢的。