使用PHP 5.3.x安全删除

opH*_*AME 6 php linux

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

场景:文件已加密并保存,请求下载时,文件将被复制到临时文件夹并解密.这已经有效了.

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

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

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

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

bre*_*iti 7

通过exec/system/passthru 调用" shred "


Ja͢*_*͢ck 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);
Run Code Online (Sandbox Code Playgroud)

你也可以选择/dev/urandom,但这会很慢.