在php中安全删除文件
我想用PHP安全地删除一个文件。我想到了以下几种选择在php中安全删除文件,php,security,delete-file,Php,Security,Delete File,我想用PHP安全地删除一个文件。我想到了以下几种选择 通过系统调用使用分解。(exec,shell_exec,…),但在大多数共享主机中,这些功能被禁用,并且在安全模式打开时被禁用 通过fopen打开它,并用随机数据覆盖它,然后取消链接它。如果我错了,请纠正我,但在进行研究时,我发现它在某些服务器上被禁用 我想到的最佳选择是使用file\u put\u content将其数据覆盖为零,然后将其删除 问题是:文件内容是否保证覆盖文件?我在下面的示例中编写了一种过于简单的方法:这段代码会安全地删
- 通过系统调用使用
分解
。(exec,shell_exec,…),但在大多数共享主机中,这些功能被禁用,并且在安全模式打开时被禁用李>
- 通过
打开它,并用随机数据覆盖它,然后fopen
它。如果我错了,请纠正我,但在进行研究时,我发现它在某些服务器上被禁用取消链接
- 我想到的最佳选择是使用
将其数据覆盖为零,然后将其删除李>file\u put\u content
- 通过
更新:我发布的代码更多的是演示文件的覆盖:实际代码将是的一个实现,而不是那么简单。如果删除值为“0”的文件,则仍可还原该文件。您应该使用任何一种算法进行真正安全的删除。例如:
它每个文件使用35次连续写入。它并不是那么简单。如果删除值为“0”的文件,则仍可还原该文件。您应该使用任何一种算法进行真正安全的删除。例如:
它对每个文件使用35次连续写入。找到一个执行此操作的PHP库找到一个执行此操作的PHP库如果您需要安全地处理文件,请不要使用共享托管。我知道共享托管带来的安全隐患和跨站点危害风险。尽管如此,我还是想知道我发布的方法是否“安全”,这取决于您对安全的定义。如果托管是好的,那么他们将保留备份。如果它存在于第三方备份中,您是否认为它已被安全删除?Jon在这里有一个很好的观点。除非您知道所使用的确切存储实现,否则您永远无法知道它是否“安全”,具体取决于设备类型(主轴与SSD),您的方法将有所不同。寻找一些洞察力。另外,请不要在SSD上覆盖35次,除非您的目标是使其作为设备变得无用。如果您需要安全地处理文件,请不要使用共享托管。我知道共享托管带来的安全隐患和跨站点危害风险。尽管如此,我还是想知道我发布的方法是否“安全”,这取决于您对安全的定义。如果托管是好的,那么他们将保留备份。如果它存在于第三方备份中,您是否认为它已被安全删除?Jon在这里有一个很好的观点。除非您知道所使用的确切存储实现,否则您永远无法知道它是否“安全”,具体取决于设备类型(主轴与SSD),您的方法将有所不同。寻找一些洞察力。另外,请不要在SSD上覆盖35次,除非您的目标是使其作为设备变得无用。
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);
}