6

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

场景:文件被加密并保存,当请求下载时,文件被复制到临时文件夹并解密。这已经在起作用了。

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

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

  • 通过“fopen”打开文件并将 0,1 写入其中(想想很慢)
  • 将文件保存到 Memcache 而不是硬盘(我的主机可能有问题)
  • 在命令行或 cronjob 上使用 somd 3rd pary 工具(安装可能有问题)

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

4

2 回答 2

7

通过 exec/system/passthru调用“ shred ”

于 2012-06-13T09:22:56.517 回答
5

可以说,最好的办法是从一开始就永远不要将文件保存为解密状态。

相反,使用流过滤器即时解密并将其直接发送给最终用户。

更新

如果您考虑以下代码,您的选项 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,但这会很慢。

于 2012-06-13T09:26:44.683 回答