Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > при upload картинки проверить что это картинка


Автор: kolombo777 15.11.2008, 15:22
при upload картинки проверить что это картинка,
а то ведь могут php-shell загрузить.
можно проверить по заголовку браузера mime-type,
но нельзя браузеру доверять, так как браузер
находится на стороне клиента -> заголовок mime-type можно подделать.
Значит надо проверить содержимое картинки,
как это сделать?

Автор: skyboy 15.11.2008, 15:28
http://php.net/getimagesize -> ['MIME']

Автор: kolombo777 15.11.2008, 15:54
а может нужно использовать библиотеку gd ?
Воспользоваться функцией imagecreatefrom... 
например imagecreatefromjpeg если вернула ошибку то это не имейдж или поврежденный имейдж 

Автор: awers 15.11.2008, 17:01
согласен с kolombo777

Код

 $size = getimagesize($src);
 if ($size === false) return false;

Автор: ksnk 15.11.2008, 19:05
Не все так просто, imho. 
GD плохо относится к анимированным гифам, хотя, конечно, открыть позволит. 
Можно еще нарваться на многомегабайтную картинку, для которой нету рессурсов у этого GD для того, чтобы ее открыть.
swf, к примеру, тоже своего рода картинка...

Есть еще один не очень надежный, но более универсальный способ - http://ru2.php.net/manual/en/function.mime-content-type.php. Это какой-то автоматический определятель формата файла по сигнатуркам в самом файле.  Достаточно умно, быстро. 

Автор: Pentium133 18.11.2008, 12:43
Посмотрите тут http://habrahabr.ru/blogs/php/44615/ первую и вторую части статьи.
Тема раскрыта полностью.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)