받은 파일이 PHP
의 이미지인지 확인하는 방법이 있습니까?PHP 파일이 이미지인지 확인하십시오.
script
을 업로드하고 확장명을 원하는대로 변경하면 확장 프로그램 테스트가 내게 안전하지 않습니다.
나는 getimagesize
을 사용해 보았지만 그 특정 문제에 더 적합한 것이있을 수 있습니다.
받은 파일이 PHP
의 이미지인지 확인하는 방법이 있습니까?PHP 파일이 이미지인지 확인하십시오.
script
을 업로드하고 확장명을 원하는대로 변경하면 확장 프로그램 테스트가 내게 안전하지 않습니다.
나는 getimagesize
을 사용해 보았지만 그 특정 문제에 더 적합한 것이있을 수 있습니다.
MIME 형식 얻을 수있는 기본 방법 :
MIME 형식이 exif_imagetype 및 getimagesize 있습니다 얻을 finfo_fopen()
대안 PHP> 5.3 사용하기 위해 PHP < 5.3 사용 mime_content_type()
를 들어,하지만이 적절한 데에 의존 libs가 설치되었습니다. 또한 그들은 magic.mime에 주어진 전체 목록 대신 이미지 mimetypes를 반환 할 가능성이 높습니다.
mime_content_type
은 (는) PHP5.3에서 제거되었지만 해당 버전 아래에서 제대로 작동합니다. E_STRICT
은 더 이상 사용되지 않는 것에 대한 통지를 제기하지 않습니다. 시스템에서 사용할 수있는 기능에 대해 신경 쓰지 않으려면 함수 호출을 사용할 수있는 것으로 위임 한 프록시 메소드로 네 가지 함수를 모두 감싸기 만하면됩니다 (예 :
function getMimeType($filename)
{
$mimetype = false;
if(function_exists('finfo_fopen')) {
// 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() 파일 이미지인지 운동의 가장 확실한 방법 같아야이 샘플 getimagesize이므로() 출력
if(@is_array(getimagesize($mediapath))){
$image = true;
} else {
$image = false;
}
:
Array (
[0] => 800
[1] => 450
[2] => 2
[3] => width="800" height="450"
[bits] => 8
[channels] => 3
[mime] => image/jpeg)
그래, 이건 내 직감 이었어.하지만이 방법을 속일 수있을 때, 파일의 형식을 얻는 데 정확히 맞는 것을 찾고 있었다. 나는 이것을 GIF로 보았다. (http://ha.ckers.org/blog/20070604/passing-malicious-php-through-getimagesize/). – sf89
'getimagesize'가 실패하면 false를 반환하므로'$ image = getimagesize ($ mediapath)? true : false;' – neokio
if ($ array = getimagesize ($ mediapath)) {// 참인 경우 $ array를 사용하십시오.}' –
파일 확장자와 getimagesize
기능을 사용하면 업로드 된 파일에 r이 있는지 검색 할 수 있습니다. ight 형식은 엔트리 레벨 검사 일 뿐이며 실제 확장자와 이미지 헤더의 일부 바이트가 포함 된 파일을 업로드하여 우회 할 수 있습니다.
안전성을 위해 업로드 된 사진을 축소/크기 조정 (원본 이미지 크기 포함) 할 수 있으며 업로드 된 사진 대신이 버전을 저장할 수 있습니다. 파일 콘텐츠를 업로드하고 파일을 찾기 위해 <?php
과 같은 특수 문자를 검색하는 것도 가능합니다.
조금 무겁지 않습니까? 나는 그것을 조사 할 것이다. – sf89
[업로드 된 파일 형식 검사 (PHP)] (http://stackoverflow.com/questions/6755192/uploaded-file-type-check-by-php) 및 [업로드 된 보안 스레드] (http : /stackoverflow.com/questions/11061355/security-threats-with-uploads) – deceze
http://stackoverflow.com/questions/173868/how-to-extract-a-file-extension-in-php –
@Pramod 그냥 확인 파일 확장자는 정확하게 * 충분하지 않습니다. – deceze