использование getimagesize (), чтобы определить, является ли файл изображением - PullRequest
0 голосов
/ 16 сентября 2011

Будет ли вызывать getimagesize() для файла и проверять, отличается ли возвращаемое значение от false, чтобы определить, является ли файл изображением?

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

Ответы [ 2 ]

2 голосов
/ 16 сентября 2011

getimagesize () - довольно надежный признак того, что файл является изображением, да.

Будет определено, имеет ли изображение допустимый заголовок.

Он (обычно) не определяет, есть ли какие-либо искажения в фактических данных изображения, которые могут отображаться как испорченное изображение или ошибка при загрузке изображения.

Вы также можете иметь в виду, что файл может быть допустимым файлом изображения, но также может скрывать и другие данные - либо в метаданных, данных изображения, либо после окончания данных изображения. Таким образом, хотя getimagesize () может сообщить вам, что у вас есть действительное изображение, это не обязательно означает, что файл также не является допустимым как другой тип. Поскольку файлы JAR и ZIP считываются из конца файла, возможно, что файл является и действительным изображением, и действительным файлом JAR / ZIP, а файлы JAR могут выполняться в браузере - основа эксплойта GIFAR .

1 голос
/ 16 сентября 2011

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

Это лучший метод, который встроен в PHP.

Расширенные инструменты, такие как Команда * ImageMagick identify, по сути, делает то же самое - рассматривайте их, только если вам нужно поддерживать гораздо больше форматов файлов, чем те, которые поддерживаются getimagesize() (их список здесь , в IMAGETYPE_* константах).

...