현재 위치: > 최신 기사 목록> md5_file ()을 사용하여 업로드 된 파일이 알려진 악성 파일인지 여부를 감지하십시오.

md5_file ()을 사용하여 업로드 된 파일이 알려진 악성 파일인지 여부를 감지하십시오.

M66 2025-05-29

웹 사이트 개발에서 파일 업로드 기능은 일반적이고 중요한 모듈이지만 보안 위험도 제공합니다. 공격자는 악성 파일을 업로드하여 서버의 보안을 위험에 빠뜨릴 수 있습니다. 이러한 유형의 위험을 방지하기 위해 일반적으로 사용되는 방법은 업로드 된 파일이 파일의 해시 값 (예 : MD5)에 의해 알려진 악성 파일인지 확인하는 것입니다.

이 기사는 PHP 내장 기능 MD5_File ()을 사용하여 알려진 악성 파일의 MD5 값 목록을 결합하여 업로드 된 파일이 위험에 처해 있는지 여부를 결정하는 방법을 소개합니다.


1. MD5_FILE () 소개

md5_file () 은 PHP의 함수로 지정된 파일의 MD5 해시 값을 계산합니다. md5 () 와 달리 md5 ()는 문자열을 해시하고 md5_file () 은 파일 컨텐츠의 해시를 직접 계산하며, 이는 파일이 일관되는지 여부를 감지하는 데 적합합니다.

사용 예 :

 $hash = md5_file('/path/to/file.txt');
echo $hash;

반환 값은 파일 컨텐츠의 32 비트 16 진수 MD5 값입니다.


2. 구현 아이디어

  1. 배열 또는 데이터베이스에 저장된 알려진 악성 파일에 대한 MD5 해시 값 목록을 유지하십시오.

  2. 사용자가 파일을 업로드 한 후 파일을 임시 디렉토리로 저장하십시오.

  3. md5_file ()을 사용하여 파일의 해시 값을 계산하십시오.

  4. 해시 값이 악의적 인 목록에 있는지 여부를 결정합니다.

  5. 존재하는 경우 파일이 업로드되거나 삭제되지 않습니다. 그렇지 않으면 업로드가 허용됩니다.


3. 코드 예제

다음 예제는 간단한 파일 업로드 및 악성 파일 감지를 보여줍니다.

 <?php
// 악성 파일이 알려져 있습니다 MD5 목록(예)
$malicious_md5_list = [
    'd41d8cd98f00b204e9800998ecf8427e', // 空文件예
    '5d41402abc4b2a76b9719d911017c592', // 其他恶意文件예
];

// 업로드 된 파일이 있는지 확인하십시오
if (isset($_FILES['upload_file']) && $_FILES['upload_file']['error'] === UPLOAD_ERR_OK) {
    $tmpFilePath = $_FILES['upload_file']['tmp_name'];

    // 파일을 계산하십시오 MD5 값
    $fileMd5 = md5_file($tmpFilePath);

    // 악의적 인 파일인지 확인하십시오
    if (in_array($fileMd5, $malicious_md5_list)) {
        echo "업로드 된 파일은 알려진 악성 파일로 감지됩니다.,업로드 실패。";
        // 임시 파일 또는 로그 로그를 삭제하도록 선택할 수 있습니다.
        unlink($tmpFilePath);
    } else {
        // 파일을 대상 디렉토리로 이동하십시오
        $destination = __DIR__ . '/uploads/' . basename($_FILES['upload_file']['name']);
        if (move_uploaded_file($tmpFilePath, $destination)) {
            echo "파일 업로드를 성공적으로 업로드하십시오。";
        } else {
            echo "파일 저장이 실패했습니다。";
        }
    }
} else {
    echo "업로드 파일이 감지되거나 오류를 업로드하지 않았습니다。";
}
?>

4. 주목할만한 것들

  • 악성 파일 라이브러리 업데이트 : 최신 악성 파일 해시 라이브러리를 유지하는 것이 중요하며 정기적으로 업데이트하는 것이 좋습니다.

  • MD5 충돌 위험 : MD5는 충돌 위험이있는 것으로 입증되었으며 극단적 인 경우 공격자는 동일한 해시가있는 파일을 구성 할 수 있습니다. SHA256과 같은 더 안전한 해시 기능을 고려하십시오 ( Hash_file ( 'SHA256', $ file) 사용).

  • 다중 탐지 메커니즘 : 해시 감지에만 의존하지 않으며 파일 유형 확인, 파일 확장 제한, 컨텐츠 스캔 (예 : 바이러스 백신 소프트웨어)과 같은 여러 측정 값을 결합하는 것이 가장 좋습니다.

  • 권한 보안 : 악성 파일이 직접 실행되는 것을 방지하기 위해 디렉토리를 업로드하려면 합리적인 권한이 필요합니다.


5. 요약

PHP의 MD5_File () 함수를 사용하여 업로드 된 파일의 내용이 알려진 악성 파일과 일치하는지 여부를 신속하게 결정하여 파일 업로드의 보안을 향상시키는 데 도움이됩니다. 완전한 악성 파일 해시 라이브러리와 여러 보호 조치를 결합하면 악성 파일이 서버에 해를 끼치 지 않도록 효과적으로 방지 할 수 있습니다.