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 :: Способ проверки изображения.

 PHP.SU

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


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

> Без описания
Forever
Отправлено: 14 Марта, 2016 - 05:57:26
Post Id


Новичок


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


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




Читал, многие советуют проверять загруженное изображение (да и файлы вообще), пока оно еще находится в папке "/tmp", и только если проверка удачна - переносить его , так сказать, к себе.

Кто-то советует сразу перенести к себе, и никогда не работать с файлом, пока он еще в "/tmp".

подскажите, какие плюсы и минусы у обоих этих вариантов.
И еще: какой самый надежный и легкий способ узнать mime-тип файла?
 
 Top
Шмайсер
Отправлено: 14 Марта, 2016 - 07:49:07
Post Id


Новичок


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


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




Можно покупать продукты и сразу есть, не интересуясь ни сроком годности, ни надежностью производителя. Результат тот-же, как и с картинками... может прокатит а может будешь "быстро какать".

как минимум, проверять что это картинка - имхо необходимо.
PHP:
скопировать код в буфер обмена
  1.  
  2. if(($_FILES[$file]['type'][$i] != 'image/jpeg') and ($_FILES[$file]['type'][$i] != 'image/gif') and ($_FILES[$file]['type'][$i] != 'image/png')){
  3. $error =$_FILES[$file]['name'][$i] . " Файл не является изображением JPG, GIF или PNG. ";
  4. }
  5.  
 
 Top
Мелкий Супермодератор
Отправлено: 14 Марта, 2016 - 09:55:29
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Шмайсер пишет:
как минимум, проверять что это картинка - имхо необходимо.

Угу, и поэтому слепо доверяемся mime-типу, присланному самим же пользователем.

Forever пишет:
И еще: какой самый надежный и легкий способ узнать mime-тип файла?

http://php.net/manual/en/functio...content-type.php
Или finfo_file там же.
Картинки можно на getimagesize ещё проверять.

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


-----
PostgreSQL DBA
 
 Top
Шмайсер
Отправлено: 14 Марта, 2016 - 11:07:09
Post Id


Новичок


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


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




Цитата:
Угу, и поэтому слепо доверяемся mime-типу, присланному самим же пользователем

Я ж написал "как минимум" - честный пользователь из самых чистых побуждений может случайно загрузить вместо картинки любой случайный файл (тыкнул мышкой не в то место).
Это - как минимум!

Цитата:
getimagesize

да, тоже так делаю всегда - файл php не имеет ширины и высоты, как у картинок. Дальше проверять все остальное
 
 Top
Мелкий Супермодератор
Отправлено: 14 Марта, 2016 - 11:43:41
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Шмайсер пишет:
файл php не имеет ширины и высоты, как у картинок

Когда как, бывает, что имеет.
Несколько очевидных и не очень граблей: https://habrahabr[dot]ru/post/148999/


-----
PostgreSQL DBA
 
 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