2012-12-21 4 views
0

가능한 중복 :
How to check if an uploaded file is an image without mime type?
uploading, processing, storing and delivering user-provided files and images가짜 이미지를 업로드하지 않으려면 어떻게해야하나요?

는 내가 그것의 절반을 만들어, 이미지 공유 스크립트가 있습니다. 사용자가 PHP 또는 CGI 파일을 .jpg로 이름을 바꾸고 업로드 할 수 있으며 정상적으로 업로드 할 수 있습니다.

가짜 이미지를 업로드하지 않으려면 어떻게해야합니까?

여기에 파일 형식을

 $userfile_type = $_FILES['file']['type'];

을 확인하는 내 방식이며, 내가 PHP 파일의 이름을 바꿀 때이 easly 업로드 할 수 php.jpg 수 있습니다.

답변

3
// return mime type ala mimetype extension 
$finfo = finfo_open(FILEINFO_MIME_TYPE); 
    $type = finfo_file($finfo, $tmp_name); 
finfo_close($finfo); 

http://php.net/manual/en/ref.fileinfo.php을 사용하면 서버는 당신에게 파일의 종류와 같이하지 브라우저를주고있다 너의 본보기. 감사합니다 비벡 ". getimagesize는 GD 라이브러리 함수가 아닙니다 그것은 PHP로 고유의"

GD하면 getimagesize() 파일은 이미지가 아닌 경우 0을 반환 이

수정처럼 뭔가를 할 수

해피 코딩 !!

+0

Imagemagic을 사용합니다. 덕분에 – Alamri

+1

"exif_imagetype()"을 시도해보십시오. 그러나 일부 이미지는 exif 데이터가 없거나 Imagemagick "Identify filename.png"에 있습니다. – kobino

+0

getimagesize는 GD 라이브러리 함수가 아닙니다. 그것은 PHP에서 기본입니다. – vivek

1

를 사용하여 이미지 매직과 이미지 정보 그것을하는 최선의 방법

+1

나는 이미지 매직을 사용하여 이미지 정보 유형을 어떻게 chech하는가? 이 바보 같은 실수로 해킹 당했어 – Alamri

+0

http://php.net/manual/en/imagick.getimageproperties.php –

1

하나를 확인이

1

getimagesize()를 사용하여 이미지 크기를 확인할 수 있습니다. 함수가 크기를 가져올 수없는 경우 False가 반환됩니다. GD 라이브러리를 사용하고 imagecreatefromstring() 함수를 사용하여 실제 이미지인지 여부를 확인하면 더 좋습니다.

1

exif_imagetype()

php.net의 예 :

if (exif_imagetype('image.gif') != IMAGETYPE_GIF) { 
     echo 'The picture is not a gif'; 
    } 

또한 이것이 내가 링크 된 php.net 페이지에서 직접입니다 :

* 함수 exif_imagetype()를 사용할 수없는 경우; 다음 해결 방법을 시도해보십시오. *

if (! function_exists('exif_imagetype')) { 
    function exif_imagetype ($filename) { 
     if ((list($width, $height, $type, $attr) = getimagesize($filename)) !== false) 
     { 
      return $type; 
     } 
    return false; 
    } 
} 
관련 문제