从服务器完全删除文件

Ama*_*jee 47 php

我想使用PHP删除文件.我已经使用过该unlink()功能,但我想知道它的安全性unlink.文件是否已从服务器中完全删除?我想确保无法恢复文件,并且文件已从服务器中完全删除.

biz*_*dee 50

以二进制模式打开文件进行写入,在整个文件上写入1,关闭文件,然后取消链接.覆盖文件中的任何数据,以便无法恢复.

我个人会说使​​用1而不是0,因为1是实际数据并且将始终写入,其中0可能不写,取决于几个因素.

编辑:经过一番思考和阅读评论后,我会采用混合方式,取决于你想要文件的"删除方式",如果你只是希望这样做,那么数据无法恢复,覆盖整个文件长度为1,因为这很快,并且破坏数据,这个问题,是它在磁盘上留下一定长度的统一数据,它推断文件USED在那里并放弃文件长度,提供重要的法医件信息.简单地编写随机数据也不会避免这种情况,就好像这个文件周围的所有驱动扇区都不受影响一样,这也会留下一个取证痕迹.

法医删除,混淆和合理否定的最佳解决方案(再次,这是过度的,但我为了添加它而添加它),用1的覆盖文件的整个长度然后,对于HALF文件的长度以字节为单位,mt_rand从随机起始点以随机长度大小写入,留下许多不同长度的文件曾经在此区域中的印象,从而产生错误的痕迹.(再次,这是完全矫枉过正的,通常只有连环杀手和中央情报局需要,但我为了这样做而加入它).

  • 或者让我们使用`mt_rand()`来写随机数!顺便说一句,你想在php聊天室:) (2认同)

Hea*_*ert 11

美国政府过去常常建议对磁盘进行七步擦拭.1)所有'1'2)全'0'3'模式'01'4)模式'10'5)随机模式6)全'1'7)随机模式,

重新编写代码示例,使用像PHP这样的语言对于这种类型的擦除是错误的,因为你在操作系统上的中继真的擦除了文件并且没有做一些切割器,比如最后一次擦除或只是取消链接,但是...

(另)

$filename = "/usr/local/something.txt";
$size = filesize($filename);

$pat1 = chr(0);
$pat2 = chr(255);
$pat3 = chr(170);
$pat4 = chr(85);

$mask = str_repeat($pat1, $size);
file_put_contents($filename, $mask);

$mask = str_repeat($pat2, $size);
file_put_contents($filename, $mask);

$mask = str_repeat($pat3, $size);
file_put_contents($filename, $mask);

$mask = str_repeat($pat4, $size);
file_put_contents($filename, $mask);
Run Code Online (Sandbox Code Playgroud)