Действительно ли картинка?

Статус
В этой теме нельзя размещать новые ответы.

Stadnitski Alex

Новичок
Фанат
я куда угодно загружу джипег с пхп кодом внутри.
при том, что портить картинку для этого совершенно не не обязательно
Пусть даже так, но для чего разрешать пользователю грузить плохие файлы?
 

SiMM

Новичок
> Плохой файл - он же испорченый файл - он же поврехденный файл
Файл, содержащий EXIF-заголовки - плохой?
И какое отношение три вышеназванных типа файлов имеют к внедрению в файл PHP-кода?
 

Stadnitski Alex

Новичок
Автор оригинала: SiMM
> И какое отношение три вышеназванных типа файлов имеют к внедрению в файл PHP-кода?
А ты попробуй открыть файл в текстовом редакторе и внедрить в него php-код, сохранить файл, а потом открыть для просмотра
 

SiMM

Новичок
> А ты попробуй открыть файл в текстовом редакторе и внедрить в него php-код, сохранить файл, а потом открыть для просмотра
А ты попробуй не использовать для этого блокнот, а пользоваться более подходящим софтом ;)

А вообще - пожалуйста, скачай http://simm.superihost.com/PHPinJPG.jpg скорми её php-интерпретатору - отбросив всё лишнее получишь результат отработки phpinfo - и кто мне скажет, чем этот файл "плох" или "бит" с точки зрения JPEG? Так что выход у тебя один, и тебе его уже давно озвучили.
 

Мутник

Новичок
ayrat9

тебе фанат уже сказал по поводу советов...
знаешь что такое pjpeg??

это ПРОГРЕССИВНЫЙ jpeg - такой вид сохранения есть... А не прихоть ИЕ

-~{}~ 06.06.05 15:26:

Stadnitski Alex

слушай, тебе что делать нечего, кроме как демогогию тут разводить???

тебе ж сказали НЕ ДЕЛАЙ include файлов, полученных от пользоватлея и у тебя НЕ БУДЕТ никаких проблем.. ЧТо тебе еще надо, скажи по-русски... тебе помогут.
 

Stadnitski Alex

Новичок
Мутник
тебе ж сказали НЕ ДЕЛАЙ include файлов, полученных от пользоватлея и у тебя НЕ БУДЕТ никаких проблем.. ЧТо тебе еще надо, скажи по-русски... тебе помогут.
А я инклудов и не делаю. Я хочу знать как можна делать проверку на "правильность" рисунка, для того чтоб в случае загрузги пользователем поврежденного файла, он получил сообщение о том что файл поврежден.
 

kruglov

Новичок
Stadnitski Alex
А я хочу знать, как жить вечно. Ваши предложения?

По теме: Вы прочитали пост SiMM от 15:19 ?
 

SiMM

Новичок
> Я хочу знать как можна делать проверку на "правильность" рисунка, для того чтоб в случае загрузги пользователем поврежденного файла, он получил сообщение о том что файл поврежден.

А что такое повреждённый файл? И где он был повреждён? Если говорить о JPEG, то примитивно можно проверять на наличие тэга EOI в конце файла (в конце файла должно быть "\xFF\xD9") - в своё время я так проверял целостность файлов, закаченных по ftp (т.е. закачен ли файл целиком) - но для HTTP смысла в этом, думаю, мало. И это, конечно же, не даёт никаких гарантий.
 

Фанат

oncle terrible
Команда форума
А я инклудов и не делаю. Я хочу знать как можна делать проверку на "правильность" рисунка,
отлично.
Значит тема безопасности закрыта за полной бессмысленностью.

Проблема "плохих" картинок к безопасности отношения не имеет.
я рад, что все, наконец, это поняли.

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

ayrat9

Новичок
Mutnik
cпасибо, не знал про прогрессив
Однако если пользователь будет грузить прогрессив джпег из оперы или мозилы тип файла все равно будет image/jpeg
 

Royal Flash

-=MaestrO=-
SIMM http://simm.superihost.com/PHPinJPG.jpg - phpinfo в jpeg - это конечно интересно... Только ведь насколько криво нужно писать движок сайта, чтобы это phpinfo в картинке сработало? :)

Stadnitski Alex Решение твоей проблемы, я думаю, ниже:
PHP:
$userfile = $_FILES[userfile]; 

$size = GetImageSize($userfile[tmp_name]);

if (strlen($userfile[name]) < 1)
  {
  echo 'не выбран файл для загрузки.';
  }
else if (!ereg("[a-zA-Zа-яА-Я0-9_!]", $userfile[tmp_name]))
  {
  echo 'неправильное имя файла';
  }
else if (strlen($userfile[tmp_name]) > 25)
  {
  echo 'слишком длинное имя фала';
  }
elseif ($userfile[size] == 0) 
  {
  echo 'файл для загрузки имеет размер 0 Kb.';
  }
elseif ($userfile[size] > 2000000) 
  {
  echo 'Максимально-допустимый размер файла - 2,000,000 байт';
  }

elseif (!($size)) 
  {
  echo 'загружаемый вами файл имеет недопустимый формат.';
  }
elseif ($userfile[error] != 0) 
  {
  echo 'неизвестная ошибка';
  }
Дирректория, в которую пишутся изображения, желательно, точнее обязательно, должна быть защищена .htaccess от исполнения из нее любых скриптов.

Картинка открывается только при помощи HTML: img src="filename.jpeg"

Если сделаеш, как описано - гарантия 99% от взлома, путем заливки "неправильной" картинки :)

1% - если я что-то упустил в проверке :)

Даже если тебе зальют "неправильный" файл, (пример от SIMM) - PHP код там всеравно не сработает.
 

Фанат

oncle terrible
Команда форума
Royal Flash, если бы ты читал эту тему внимательнее, то понял бы всю бессмысленность своего кода.
Но я понимаю - желание написать сильнее желания читать.
 

Stadnitski Alex

Новичок
Royal Flash спасибо за старание, но это не совсем то что нужно. В написаном тобой коде нет для меня ничего нового...
 

bgm

&nbsp;
Royal Flash
Т.е. читать предыдущие сообщения ты не умеешь?
 

Stadnitski Alex

Новичок
Автор оригинала: SiMM
А вообще - пожалуйста, скачай http://simm.superihost.com/PHPinJPG.jpg скорми её php-интерпретатору - отбросив всё лишнее получишь результат отработки phpinfo - и кто мне скажет, чем этот файл "плох" или "бит" с точки зрения JPEG? Так что выход у тебя один, и тебе его уже давно озвучили.
Тогда почему на сайте http://pilt.ee/ она не проходит? Значит там довольно неплохо поработали и придумали как проверить, бит ли файл
 

Фанат

oncle terrible
Команда форума
С чего ты взял, что этот файл битый?

На сайте пилт.ее не проходит как раз потому, что он вместе с битыми отбрасывает и совершенно нормальные картинки.
 

Stadnitski Alex

Новичок
Автор оригинала: Фанат
С чего ты взял, что этот файл битый?

На сайте пилт.ее не проходит как раз потому, что он вместе с битыми отбрасывает и совершенно нормальные картинки.
Ниодной нормальной еще не отбросил
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху