programing

PHP 파일이 이미지인지 확인

powerit 2023. 9. 15. 21:28
반응형

PHP 파일이 이미지인지 확인

수신된 파일이 이미지인지 확인하는 방법이 있습니까?PHP?

당신이 업로드 할 수 있는 것처럼 내게 확장을 위한 테스트는 그다지 안전하게 들리지 않습니다.script원하는 대로 변경할 수 있습니다

사용하려고 했습니다.getimagesize하지만 그 문제에 더 적합한 것이 있을 수도 있습니다.

getimage size()는 파일이 이미지인지 여부를 계산하는 가장 확실한 방법이어야 합니다.

if(@is_array(getimagesize($mediapath))){
    $image = true;
} else {
    $image = false;
}

이는 getimagesize(이미지 크기) 출력의 샘플이기 때문입니다.

Array (
[0] => 800
[1] => 450
[2] => 2
[3] => width="800" height="450"
[bits] => 8
[channels] => 3
[mime] => image/jpeg)

기본적으로 밈 유형을 얻는 방법:

PHP < 5.3의 경우 mime_content_type()을 사용합니다.
PHP >= 5.3의 경우에는 finfo_open() 또는 mime_content_type()를 사용합니다.

MimeType을 대체할 수 있는 방법은 exif_imagetypeimagesize이지만, 이는 적절한 립(lib)을 설치하는 것에 의존합니다.또한 magic.mime으로 제공된 전체 목록 대신 이미지 mim 유형만 반환할 가능성이 높습니다.

하는 동안에mime_content_type는 PHP 4.3에서 사용할 수 있으며 FileInfo 확장자의 일부입니다(자세한 내용은 여기를 참조하여 수동으로 활성화해야 하는 Windows 플랫폼을 제외하고는 PHP 5.3 이후로 기본적으로 활성화됩니다).

시스템에서 사용 가능한 기능에 대해 신경 쓰지 않으려면 4가지 기능을 모두 사용 가능한 모든 기능에 위임하는 프록시 방식으로 마무리하면 됩니다.

function getMimeType($filename)
{
    $mimetype = false;
    if(function_exists('finfo_open')) {
        // open with FileInfo
    } elseif(function_exists('getimagesize')) {
        // open with GD
    } elseif(function_exists('exif_imagetype')) {
       // open with EXIF
    } elseif(function_exists('mime_content_type')) {
       $mimetype = mime_content_type($filename);
    }
    return $mimetype;
}

파일 확장명 사용 및getimagesize업로드된 파일의 형식이 올바른지를 탐지하는 기능은 단지 엔트리 레벨 검사일 뿐이며, 단순히 실제 확장명을 가진 파일과 이미지 헤더의 일부 바이트를 업로드하지만 잘못된 내용을 업로드함으로써 우회할 수 있습니다.

안전하고 안전하기 위해 업로드된 사진을 썸네일/스냅샷(원래 이미지 크기라도)으로 만들고 업로드된 사진 대신 이 버전을 저장할 수 있습니다.또한 파일 내용을 업로드하여 다음과 같은 특수문자를 검색할 수 있습니다.<?php파일을 찾으려면 이미지인지 아닌지를 확인합니다.

언급URL : https://stackoverflow.com/questions/15408125/php-check-if-file-is-an-image

반응형