Форумы портала PHP.SU » » Работа с файловой системой и файлами » Способ проверки изображения.

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

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

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

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

как минимум, проверять что это картинка - имхо необходимо.
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.  
3. Мелкий - 14 Марта, 2016 - 09:55:29 - перейти к сообщению
Шмайсер пишет:
как минимум, проверять что это картинка - имхо необходимо.

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

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

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

В чём может быть смысл сначала копировать файл куда надо, а потом его удалять, потому что файл не прошёл валидацию? Даже если файл для этого надо просто скопировать, а не передавать куда-нибудь во внешнее хранилище или ещё какие манипуляции делать.
4. Шмайсер - 14 Марта, 2016 - 11:07:09 - перейти к сообщению
Цитата:
Угу, и поэтому слепо доверяемся mime-типу, присланному самим же пользователем

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

Цитата:
getimagesize

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

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

 

Powered by ExBB FM 1.0 RC1