Могу ли я доверять типу файла из $_FILES
при загрузке изображений? Или мне нужно снова проверить exif_imagetype()
?
Из документации :
Тип mime файла, если браузер предоставил эту информацию. Примером может служить «image / gif». Этот тип mime, однако, не проверяется на стороне PHP и поэтому не принимает его значение как должное.
Никогда не доверяйте чему-либо, что приходит извне, особенно при загрузке файлов!
Проверьте размер, местоположение, mime / type, extenstion и все остальное, что вы можете проверить!
Нет, вы не можете доверять $_FILES['userfile']['type']
. Значение, присутствующее в этой переменной, может быть подделано. Вы можете использовать finfo_file
для более надежного определения типа файла:
$finfo = finfo_open(FILEINFO_MIME_TYPE); // we need mime type echo finfo_file($finfo, "/path/to/uploaded/file"); // displays something like image/gif finfo_close($finfo);
Для этих функций требуется PHP> = 5.3.0.
Я всегда использую следующую функцию для проверки правильных изображений:
function Check_Image($Filename) { if ($Check_Image = @getimagesize($Filename)) { return TRUE; } return FALSE; }
Нет, вы не можете доверять ему, потому что эта информация предоставляется клиентским браузером .
$_FILES['userfile']['type']
Тип mime файла, если браузер предоставил эту информацию. Примером может служить «image / gif». Этот тип mime, однако, не проверяется на стороне PHP и поэтому не принимает его значение как должное.