使用PHP 5.3.x安全删除

时间:2012-06-13 09:20:18

标签: php linux

有人知道一个好的PHP解决方案来删除或更好地从linux系统擦除文件吗?

方案: 文件被加密并保存,当请求下载时,文件被复制到临时文件夹并被解密。这已经有效了。

但是如何在发送给用户后从临时位置删除文件?

在我看来,我有以下选择:

  • 通过“fopen”打开文件并将0,1写入其中(认为非常慢)
  • 将文件保存到Memcache而不是硬盘(可能是我的托管服务商的问题)
  • 在命令行上使用somd第三个pary工具或作为cronjob(可能是一个安装问题)

目标:从硬盘中删除文件,无法恢复(擦除/覆盖)

2 个答案:

答案 0 :(得分:7)

通过exec / system / passthru

调用“shred

答案 1 :(得分: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,但这样会很慢。