Могу ли я доверять типу файла из $ _FILES? - PullRequest
8 голосов
/ 05 сентября 2011

Можно ли доверять типу файла из $_FILES при загрузке изображений? Или я должен проверить еще раз с exif_imagetype()?

Ответы [ 5 ]

7 голосов
/ 05 сентября 2011

Из документации :

MIME-тип файла, если браузер предоставил эту информацию. Примером может быть «image / gif». Этот тип MIME, однако, не проверяется на стороне PHP и поэтому не принимает его значение как должное.

5 голосов
/ 05 сентября 2011

Нет, вы не можете доверять переменной $_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.

4 голосов
/ 05 сентября 2011

Никогда не доверяйте ничему, что приходит извне, особенно загрузкам файлов!

Проверьте размер, местоположение, MIME / тип, расширение и все остальное, что вы можете проверить!

3 голосов
/ 05 сентября 2011

Я всегда использую следующую функцию для проверки действительных изображений:

function Check_Image($Filename) {
    if ($Check_Image = @getimagesize($Filename)) {
        return TRUE;
    }
    return FALSE;
}
2 голосов
/ 05 сентября 2011

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

$_FILES['userfile']['type'] Тип MIME файла, если браузер предоставил эту информацию. Примером может быть «image / gif». Это мим тип, однако, не проверяется на стороне PHP и, следовательно, не принимать его ценность как должное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...