웹 사이트 개발 및 유지 보수에서 정적 리소스 (예 : CSS, JavaScript 파일, 그림 등)의 무결성은 웹 사이트의 보안 및 사용자 경험을 보장하는 데 중요합니다. 그러나 정적 자원은 때때로 악의적으로 변조되어 사용자가 비정상적인 콘텐츠를로드하고 심지어 보안 위험을 유발할 수 있습니다. 이 기사에서는 PHP의 내장 MD5_File () 기능을 사용하여 웹 사이트의 정적 리소스가 조작되었는지 신속하게 모니터링하고 감지하는 방법을 소개합니다.
MD5_FILE ()은 파일의 MD5 해시 값을 계산하는 PHP의 함수입니다. 파일 경로 매개 변수를 수용하여 파일 내용의 32 비트 16 진수 문자열을 반환합니다. 파일의 MD5 값을 비교하면 파일 내용이 변경되었는지 신속하게 결정할 수 있습니다.
웹 사이트가 온라인 상태 인 후에는 정기적으로 정적 리소스를 조작 할 수 있도록 스캔합니다.
버전 파일을 비교하고 배포 파일의 무결성을 확인하십시오.
타사 라이브러리 파일의 보안을 모니터링하십시오.
먼저 정적 리소스 파일에서 초기 MD5 값을 계산하고 저장합니다.
이러한 파일을 정기적으로 통과하고 MD5 값을 다시 계산하십시오.
최신 MD5 값을 이전에 저장된 값과 비교하십시오.
MD5 값이 일치하지 않으면 파일이 수정되거나 변조되었습니다.
다음 예제는 PHP를 사용하여 MD5_File () 함수를 사용하여 지정된 디렉토리의 정적 자원이 조작되었는지 모니터링하는 방법을 보여줍니다.
<?php
// 모니터링 디렉토리
$directory = __DIR__ . '/static';
// 유지하다MD5값 파일(스토리지 형식은입니다 json)
$md5RecordFile = __DIR__ . '/md5_records.json';
// 역사를 읽으십시오MD5기록
$oldMd5Records = file_exists($md5RecordFile) ? json_decode(file_get_contents($md5RecordFile), true) : [];
// 디렉토리에서 모든 정적 파일을 가져옵니다
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));
$changedFiles = [];
$newMd5Records = [];
foreach ($files as $file) {
if ($file->isFile()) {
$filePath = $file->getPathname();
// 현재 파일을 계산하십시오MD5값
$md5 = md5_file($filePath);
// 기록当前MD5
$relativePath = str_replace($directory . DIRECTORY_SEPARATOR, '', $filePath);
$newMd5Records[$relativePath] = $md5;
// 더 오래MD5새로운MD5
if (!isset($oldMd5Records[$relativePath]) || $oldMd5Records[$relativePath] !== $md5) {
$changedFiles[] = $relativePath;
}
}
}
// 출력 감지 결과
if (count($changedFiles) > 0) {
echo "다음 파일이 수정되거나 추가되었습니다:\n";
foreach ($changedFiles as $changedFile) {
echo "- " . $changedFile . "\n";
}
} else {
echo "모든 파일이 변경되지 않았습니다。\n";
}
// 유지하다最新MD5기록
file_put_contents($md5RecordFile, json_encode($newMd5Records, JSON_PRETTY_PRINT));
?>
정적 디렉토리는 정적 자원을 저장하는 디렉토리이며 실제 프로젝트에 따라 경로를 조정할 수 있습니다.
MD5 레코드 파일 MD5_Records.json은 후속 비교를보다 쉽게 비교할 수 있도록 각 파일의 MD5 값을 저장하는 데 사용됩니다.
이 스크립트는 변경되거나 추가 된 파일 목록을 출력합니다.
이 스크립트를 자동 모니터링을 달성하기 위해이 스크립트를 시간이 정해진 작업 (예 : Linux의 CRON 등)으로 설정할 수 있습니다.
자동 알람 <br> 파일이 수정되도록 감지되면 관리자에게 이메일 또는 문자 메시지로 통지하여 잠재적 인 위험을 적시에 처리 할 수 있습니다.
화이트리스트 관리 <br> 자주 변경되지만 보안에 영향을 미치지 않는 특정 문서의 경우, 잘못된 경보를 피하기 위해 화이트리스트를 만듭니다.
더 강한 암호화 해싱 알고리즘 <br> 보안 요구 사항이 더 높으면 md5_file () 대신 hash_file ( 'SHA256', $ FilePath)을 사용할 수 있습니다.
버전 제어 시스템과 결합 <br> GIT와 같은 도구를 사용하여 정적 리소스를 관리하고 MD5_File ()을 결합하여 파일 보안을 보장하십시오.
웹 사이트에서 정적 자원을 모니터링하고 감지하기 위해 PHP의 MD5_File () 함수를 사용하는 것은 간단하고 효율적인 방법입니다. 개발자가 파일이 적시에 변조 될 위험을 적시에 발견하고 웹 사이트 콘텐츠의 무결성과 보안을 보장하는 데 도움이 될 수 있습니다. 자동화 된 스크립트 및 경보 메커니즘으로 협력하여 웹 사이트 보안 유지 보수의 효율성을 크게 향상시킬 수 있습니다.