현재 위치: > 최신 기사 목록> FINFO를 사용하여 파일 정보를 읽는 올바른 방법입니다

FINFO를 사용하여 파일 정보를 읽는 올바른 방법입니다

gitbox 2025-05-29

PHP에서 FINFO는 파일의 MIME 유형, 인코딩 등과 같은 메타 정보를 얻기위한 매우 실용적인 확장입니다. 전통적인 MIME_CONTENT_TYPE () 함수와 비교하여 FINFO는 보다 정확하고 유연한 기능을 제공합니다. FINFO 를 올바르게 사용하면 파일 유형 변장을 효과적으로 방지하고 파일 처리 보안을 향상시킬 수 있습니다. 이 기사는 FINFO 및 일반적인 예방 조치를 사용하는 몇 가지 정확한 방법을 자세히 소개합니다.

1. FINFO를 사용하여 MIME 유형의 기본 사용을 얻으십시오.

가장 일반적인 용도는 업로드 된 파일이 이미지인지 PDF인지 여부를 결정하는 것과 같은 MIME 유형의 파일 유형을 얻는 것입니다.

 <?php
$finfo = new finfo(FILEINFO_MIME_TYPE);
$mimeType = $finfo->file('/path/to/file.pdf');
echo $mimeType;

위의 코드에서 FileInfo_mime_type는 finfo에게 응용 프로그램/pdf 또는 image/jpeg 와 같은 마임 유형을 반환한다고 말합니다. 이것이 파일 유형을 판단하는 표준 방법입니다.

2. 문자열에서 마임 유형을 얻습니다

때로는 파일의 내용이 디스크에 반드시 저장된 것은 아니지만 API 업로드와 같은 변수를 통해 전달됩니다. finfo_buffer 메소드를 사용할 수 있습니다.

 <?php
$finfo = new finfo(FILEINFO_MIME_TYPE);
$data = file_get_contents('https://gitbox.net/sample.png');
$mimeType = $finfo->buffer($data);
echo $mimeType;

이 방법은 스트리밍 데이터 또는 원격 크롤링 컨텐츠를 처리하는 데 적합합니다.

3. 파일 업로드와 함께 처리

파일 업로드에서 FINFO 의 일반적인 응용 프로그램은 파일 컨텐츠가 확장자와 일치하는지 여부를 확인하여 사용자가 악성 스크립트 파일을 그림으로 업로드하지 못하게하는 것입니다.

 <?php
if ($_FILES['upload']['error'] === UPLOAD_ERR_OK) {
    $finfo = new finfo(FILEINFO_MIME_TYPE);
    $mimeType = $finfo->file($_FILES['upload']['tmp_name']);
    
    $allowedTypes = [
        'image/jpeg' => 'jpg',
        'image/png'  => 'png',
        'application/pdf' => 'pdf',
    ];
    
    if (!array_key_exists($mimeType, $allowedTypes)) {
        die('지원되지 않는 파일 유형。');
    }
    
    $ext = $allowedTypes[$mimeType];
    move_uploaded_file($_FILES['upload']['tmp_name'], "/uploads/file.$ext");
}

FINFO 와 사전 설정된 화이트리스트에 의해 감지 된 MIME 유형을 비교함으로써 불법 파일 업로드를 효과적으로 방지 할 수 있습니다.

4. 예방 조치와 일반적인 문제

1. 유형을 결정하기 위해 확장에 의존하지 마십시오

파일 확장은 쉽게 조작 할 수 있으며 확장에 의존하여 파일 유형을 판단하는 것은 안전하지 않습니다. 실제 내용은 항상 FINFO를 사용하여 확인해야합니다.

2. FileInfo 확장자를 활성화하십시오

일부 이전 버전의 PHP 환경에는 FileInfo 확장이 활성화되지 않을 수 있습니다. phpinfo () 또는 extension_loaded ( 'FileInfo') 에서 확인할 수 있습니다.

 <?php
if (!extension_loaded('fileinfo')) {
    die('fileinfo 확장이 활성화되지 않았습니다');
}

3. 파일 경로 및 권한 문제

finfo-> file ()은 파일이 존재하고 읽기 권한을 가지고 있어야합니다. 그렇지 않으면 응용 프로그램/옥트-스트림 또는 false를 반환 할 수 있습니다.

5. 고급 사용 : 자세한 마임 설명을 얻으십시오

FileInfo_mime_type 외에도 FileInfo_mime을 사용하여 인코딩 형식과 같은 자세한 정보를 얻을 수도 있습니다.

 <?php
$finfo = new finfo(FILEINFO_MIME);
$info = $finfo->file('/path/to/file.txt');
echo $info; // 예를 들어 text/plain; charset=us-ascii

이 접근법은 다국어 문서를 처리하거나 변환을 인코딩 할 때 특히 유용합니다.

6. 요약

FINFO를 사용하는 것은 PHP에서 파일 유형을 식별하는 가장 안전하고 신뢰할 수있는 방법 중 하나입니다. 파일 확인, 원격 데이터 분석 또는 시스템 자동화 작업을 업로드하든 FINFO를 사용하고 올바르게 사용하면 응용 프로그램에 더 높은 안정성과 보안을 제공 할 수 있습니다. FileInfo 확장자를 활성화하고 MIME Whitelist 판단과 결합하여보다 강력한 파일 처리 프로세스를 구축하십시오.