웹 사이트의 온라인 또는 업데이트 프로세스 중에는 종종 특정 주요 파일이 변조되거나 실수로 변경되지 않았는지 확인해야합니다. PHP는 매우 실용적인 기능을 제공합니다 .
MD5_File () 은 PHP의 내장 기능입니다. 파일 경로를 매개 변수로 사용하고 파일 내용의 MD5 해시 문자열을 반환합니다. 파일이 존재하지 않거나 읽을 수없는 경우 False가 반환됩니다.
$hash = md5_file('config.php');
echo $hash;
위의 코드는 config.php 파일의 MD5 값을 출력합니다.
코드를 배포 할 때는 각 중요한 파일의 MD5 값을 미리 기록하고 배포 후 계산 및 비교하여 파일이 실수로 수정되었는지 확인할 수 있습니다. 간단한 응용 프로그램 예는 다음과 같습니다.
배포하기 전에 다음 스크립트를 실행하여 모든 대상 파일의 MD5 값을 기록합니다.
$files = [
'index.php',
'config.php',
'lib/functions.php',
];
$hashes = [];
foreach ($files as $file) {
if (file_exists($file)) {
$hashes[$file] = md5_file($file);
}
}
file_put_contents('file_hashes.json', json_encode($hashes, JSON_PRETTY_PRINT));
이 스크립트는 모든 파일의 해시 값을 기록하는 file_hashes.json 파일을 생성합니다.
배포가 완료되면 다른 스크립트를 실행하여 현재 파일의 MD5 값이 원본과 일치하는지 여부를 비교할 수 있습니다.
$hashes = json_decode(file_get_contents('file_hashes.json'), true);
foreach ($hashes as $file => $originalHash) {
if (!file_exists($file)) {
echo "파일이 존재하지 않습니다:$file\n";
continue;
}
$currentHash = md5_file($file);
if ($currentHash !== $originalHash) {
echo "파일이 수정되었습니다:$file\n";
echo "차이점을보십시오:https://m66.net/diff-viewer?file=" . urlencode($file) . "\n";
} else {
echo "파일이 변경되지 않았습니다:$file\n";
}
}
이를 통해 배포 후, 특히 프로덕션 환경의 보안 모니터링을 위해 코드가 그대로 유지되는지 확인하는 데 효과적으로 도움이 될 수 있습니다.
MD5_File ()은 작은 파일의 빠른 검증에 이상적이지만 큰 파일의 경우 SHA-1 이상의 효율적인 알고리즘 사용을 고려하는 것이 좋습니다.
file_hashes.json 파일 자체가 조작되지 않았는지 확인하십시오. 시스템 잠금 또는 동기 검증 메커니즘을 배포하여 보호 할 수 있습니다.
자동 배포 프로세스에서 CI/CD 도구를 사용하는 경우이 비교 스크립트를 파이프 라인에 통합 할 수도 있습니다.
MD5_File () 을 통해 배포 프로세스 중에 파일 무결성 검증을 빠르고 효과적으로 실현하여 배포 품질을 향상시키고 시스템 보안을 향상시킬 수 있습니다. 지속적인 업데이트 및 반복 과정에서 이러한 도구가 특히 중요합니다.