我需要一种合理的方法来使用 PHP 来检查特定服务器上目录下方存在的大量文件的完整性(这里的大数字意味着 6000 或更多)。
基本上,我想知道它们是否被更改了。 我想出的解决方案是计算所有文件的哈希值,如下所示:
$accnum = 1;
$modulo = PHP_INT_MAX >> 5;
foreach ($files as $file) {
$crc32 = crc32(md5_file($file));
$accnum = ($accnum % $modulo) * 31 + $crc32;
}
$hash = md5($accnum);
然后,我将哈希记录在入侵者无法访问的地方。
然后,为了检查篡改,我重新计算哈希并将其与记录的值进行比较。 如果不同,我知道至少有一个文件已被更改。
问题:
- 这是一个合理的方法吗?
- 如果没有,如何监控大量文件的完整性?
你为什么不使用 Git?保留一个远程存储库,您的"入侵者"无法访问并监视本地更改或将您的代码与远程存储库进行比较。