Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проверка на Warning: getimagesize()

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
VestCoastman
Отправлено: 27 Октября, 2013 - 00:35:55
Post Id



Посетитель


Покинул форум
Сообщений всего: 374
Дата рег-ции: Дек. 2010  


Помог: 3 раз(а)




Как проверить правильность картинки. Допустим есть картинка *.png.
Если ее открыть текстовым редактором и допилить туда вначале какой-нибуть текст, то мы получим ошибку - Warning: getimagesize() [function.getimagesize]: PNG file corrupted by ASCII conversion in. Так вот, как избежать этой ошибки, точнее как ее проверить?

P.S. @getimagesize() не предлагать, только в том случае, если таковой проверки не существует.
 
 Top
LIME
Отправлено: 27 Октября, 2013 - 10:09:27
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




http://us3.php.net/manual/ru/fun...if-imagetype.php
(Добавление)
это же я использую для валидации типа при загрузке файла
на расширение и mime тип никакой надежды (
 
 Top
VestCoastman
Отправлено: 27 Октября, 2013 - 13:46:24
Post Id



Посетитель


Покинул форум
Сообщений всего: 374
Дата рег-ции: Дек. 2010  


Помог: 3 раз(а)




LIME пишет:
http://us3.php.net/manual/ru/fun...if-imagetype.php
(Добавление)
это же я использую для валидации типа при загрузке файла
на расширение и mime тип никакой надежды (

Пишет, что функция не существует. Видимо там еще какие-нибуть длл'ки надо подключать. Если бы писал только для себя, то поставил бы, а так не подойдет. Видимо безысходность. Придется юзать собачку.
А про mime вообще можно забыть. Это бессмысленная проверка. Так сказать "от дурака".
 
 Top
teddy
Отправлено: 27 Октября, 2013 - 15:10:27
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




LIME пишет:
на расширение и mime тип никакой надежды (

Помню ты или кто то на форуме говорил что проверка типа файла при загрузке это ни чуть не безопасно, чем например такой скрипт может навредить?
PHP:
скопировать код в буфер обмена
  1. if(isset($_POST['upload'])){
  2.     $file = $_FILES['filename'];
  3.         if($file['type'] != 'image/gif' and $file['type'] != 'image/jpeg' and $file['type'] != 'image/png'){
  4.     return false;
  5. }else{
  6.     if(is_uploaded_file($file['tmp_name'])){
  7.         move_uploaded_file($file['tmp_name'],"images/$file[name]");
  8.     }
  9.  }     
  10.  
  11. }

Типы там всякие pjpg перечислять не стал даже не громоздить код

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

(Отредактировано автором: 27 Октября, 2013 - 15:36:11)

 
 Top
VestCoastman
Отправлено: 27 Октября, 2013 - 15:48:15
Post Id



Посетитель


Покинул форум
Сообщений всего: 374
Дата рег-ции: Дек. 2010  


Помог: 3 раз(а)




teddy, меняют не расширение, а mime-type. Например при загрузке myfile.php файла с майм-типом image/gif, он загрузится как картинка(при условии, что нет проверки расширения) и к нему можно спокойно обращаться через адресную строку.
Эрроры проверять - это обязательно.

ejwrlghoiewq, уйди.

(Отредактировано автором: 27 Октября, 2013 - 15:49:14)

 
 Top
teddy
Отправлено: 27 Октября, 2013 - 15:54:15
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




ну а как тогда быть?

(Отредактировано автором: 27 Октября, 2013 - 15:56:19)

 
 Top
VestCoastman
Отправлено: 27 Октября, 2013 - 16:00:53
Post Id



Посетитель


Покинул форум
Сообщений всего: 374
Дата рег-ции: Дек. 2010  


Помог: 3 раз(а)




teddy, проверить расширение файла, проверить getimagesize() и проверить ерроры.
 
 Top
LIME
Отправлено: 27 Октября, 2013 - 18:47:32
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




http://us3.php.net/manual/ru/exi...installation.php
при установке PHP из репозиториев это расширение присутствует для Ubuntu и Debian
я его использовал и не знал что где-то его может не быть
VestCoastman на хостинге проверял? скорее там есть поддержка
(Добавление)
VestCoastman пишет:
Например при загрузке myfile.php файла с майм-типом image/gif,
а при возможности локал инклуда и расширение не важно
 
 Top
VestCoastman
Отправлено: 27 Октября, 2013 - 19:02:37
Post Id



Посетитель


Покинул форум
Сообщений всего: 374
Дата рег-ции: Дек. 2010  


Помог: 3 раз(а)




Проверял на флешке, т.е. на денвере. На дебиане проверил - работает (тоже из репозиториев ставил). На хостинге проверил - работает.

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

Тему можно закрывать)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB