在php中安全删除文件

时间:2017-06-06 13:18:36

标签: php security delete-file

我想安全地删除PHP中的文件。我想到了以下选项

  • 通过系统调用使用shred。 (exec,shell_exec,....),但在大多数共享主机中,如果启用安全模式,这些功能将被禁用并被禁止。
  • 通过fopen打开并用随机数据覆盖它并unlink。如果我错了,请纠正我,但在我的研究中,我发现它在某些服务器上被禁用。
  • 我想到的最佳选择是使用file_put_content用零覆盖其数据,然后删除它。

问题是:是否保证file_put_content会覆盖文件?我在下面的示例中写了一个简单的方法:这段代码会安全地删除文件吗?是否会有相当大的性能影响?如何使它更多"大文件友好" ?

function secure_delete($file_path)
{
    $file_size = filesize($file_path);
    $new_content = str_repeat('0', $file_size);
    file_put_contents($file_path, $new_content);
    unlink($file_path);
}

更新:我发布的代码更多是关于演示文件的覆盖:实际代码是DoD 5220.22-M的实现

2 个答案:

答案 0 :(得分:0)

不是那么简单。如果您使用' 0'删除文件值仍然可以恢复。您应该使用任何算法进行真正安全的删除。例如:Gutmann method

每个文件使用35次连续写入。

答案 1 :(得分:0)