как картинку распознать?

Cblpok

Новичок
как картинку распознать?

Как посредством пхп распознать, что загружаемый файл - картинка?
 

SiMM

Новичок
В общем случае - никак. И вообще - что значит картинка? Какой смысл вкладывается в это слово?
 

rotoZOOM

ACM maniac
У меня тоже такой вопрос стоит.
Вот пример: юзер заливает тебе картинки, которые ты потом выводишь посредством, например того же <img src="userpicture.gif">. Вместо рисунка гадкий хацкер может подсунуть вредоносный скрипт, который может выполнится.
Вот, чтобы этого не произошло и надо проверять на соответствие выдаваемого и действительного.
Проверять собираюсь тоже, getimagesize'ом.
 

SiMM

Новичок
Просто молодцы, блин.
PHP:
GIF89a
<?php // fucking_shit.php
  print_r(getimagesize(__FILE__));
?>
hint: вместо приведённого php-кода я могу написать и что-нибудь похлеще.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
rotoZOOM
ты считаешь, что если будет что-то типа <img src="script.js">, то этот код выполнится?

хотя можно и по другому.:)
 

Cblpok

Новичок
А если вот форрум, прикрепляют файл..... если картинка, то она там "висит", а не ссылка, как если бы архив какой-нибудь...
 

rotoZOOM

ACM maniac
Cblpok, 5 раз прочитал предложение, не понял вопроса. Пора спать.
И что ? Висит ? Ну ?
 

SiMM

Новичок
Автор оригинала: rotoZOOM
Вместо рисунка гадкий хацкер может подсунуть вредоносный скрипт, который может выполнится.
Вот, чтобы этого не произошло и надо проверять на соответствие выдаваемого и действительного.
Проверять собираюсь тоже, getimagesize'ом.
Для этого достаточно проверить расширение. Хотя если файлы лежат в недоступной папке и отдаются скриптом - абсолютно по барабану, какое там расширение и что там внутри - плохо может стать только пользователю.
 

rotoZOOM

ACM maniac
c0dex, должно. Многие так генерят картинки с цифрами, которые вводят в поле, для того, чтобы боты не регистрились.

SiMM а вот такая конструкция за скрипт не прокатит ?
<img src="gre.gif?s=4554015" height="100" width="100">
взято с http://www.megafonural.ru/site/sms_num/send
 

SiMM

Новичок
rotoZOOM, прокатит такая конструкция за скрипт или нет - решать вэбадмину сервера. Если ты печёшься о своём хостинге - то значит решать тебе.
Я вообще не понимаю - у человека стоит задача - обезопасить сервер. Вместо этого он выдумывает себе совершенно другую задачу (чуть ли не из области искусственного интеллекта) - как проверить, что файл - картинка. Да тебе по барабану, что тебе пользователь пришлёт - всё, что тебе нужно - чтобы он не смог это запустить. Вот и решай эту задачу, а не какую-то другую, выдуманную.
PS: интересно, нафига это сдалось самому автору топика? Тоже поди не ту задачу решает.
 

rotoZOOM

ACM maniac
SiMM ну насчет области искусственного интеллекта это конечно ты загнул (действительно getimagesize - все что надо выдает), а в остальном я согласен.
 

SiMM

Новичок
rotoZOOM, посмотри мой второй пост. Вот файлик, который я там привёл - это что? А вот getimagesize считает, что это вполне картинка. Рассуждать на тему загнул-незагнул - бессмысленно - ни я, ни ты не представляем предметную область в достаточной степени.
 

rotoZOOM

ACM maniac
SiMM позволю себе с тобой не согласиться.
В твоем примере getimagesize выдает кривые размеры.
Ну хорошо, допустим ты и размеры учтешь в заголовке и все остальное, и расширение gif, ну ведь тогда тебе браузер его действительно НАРИСУЕТ, а не выполнит, просто рисунок кривой будет :))))
Или я не прав ?
 

SiMM

Новичок
Автор оригинала: rotoZOOM
В твоем примере getimagesize выдает кривые размеры.
Что значит кривые размеры? Ты определение этому понятию дать можешь? И потом - размеры, думаю, при желании подделать тоже труда не составит.
Ну хорошо, допустим ты и размеры учтешь в заголовке и все остальное, и расширение gif, ну ведь тогда тебе браузер его действительно НАРИСУЕТ, а не выполнит, просто рисунок кривой будет :))))
Или я не прав ?
Ну и что? Серверу то с этого что? Твоя-то проблема была в том, что я мог залить ТОТ файл с расширением php (ты ведь тупо копировал файл, если он якобы картинка), после чего его выполнить (поскольку никаких мер против этого ты не предпринимал). А ты взял и всё перевернул с ног на голову - теперь оказывается это ты меня учишь уму разуму, показывая, что проверять что-то при помощи getimagesize особого смысла в твоей задаче не имеет.
 

Cblpok

Новичок
Повторюсь,
Вот в форруме, если прикрепляешь архив - ссылка на него вывешивается, так? А если картинку прикрепишь - картинка вывешивается... Типа:
Сырок прикрепил это изображение:.......
А если архив:
Сырок прикрепил это:
<a href#>скачать</a>
 

rotoZOOM

ACM maniac
:)) может по расширению узнают, может опционально спрашивают у юзера (чего ты прикреплять типа будешь).
Ты пробовал сам прикрепить ?
 

jrip

Новичок
А я обычно проще делаю, проверяю через тип файла т.е.
$HTTP_POST_FILES['file']['type'] Не знаю правильно это или нет, но пока проблем никаких не было.
 
Сверху