我想安全地删除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的实现
答案 0 :(得分:0)
不是那么简单。如果您使用' 0'删除文件值仍然可以恢复。您应该使用任何算法进行真正安全的删除。例如:Gutmann method
每个文件使用35次连续写入。
答案 1 :(得分:0)