Валидация файлов изображения на NodeJS?

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

Простая проверка mimetype или расширения обходится банальным переименованием файла.
Вот здесь коллега рекомендует проверять некие "магические числа". Насколько я понимаю, это примерно то же самое, что делает модуль file-type, который проверяет
if (check([0xFF, 0xD8, 0xFF])) {
		return {
			ext: 'jpg',
			mime: 'image/jpeg'
		};
	}

Насколько вообще надежна такая проверка?
Что мешает злоумышленнику добавить нужные символы в начало файла?

Плюс еще одна проблема: так как на сервер приходят данные в формате multipart form и файл там присутствует не как поток, а как объект File, то придется сначала закачать файл, затем проверить и уже потом удалить, если что-то не так - именно такое решение предлагается по ссылке выше. Мне кажется это как-то не очень...

Поделитесь пожалуйста своими наработками по проверке загружаемых файлов.
  • Вопрос задан
  • 2905 просмотров
Пригласить эксперта
Ответы на вопрос 2
profesor08
@profesor08
Если сомневаешься, то создай картинку на основе данного файла, если все ок, то файл был картинкой.
Ответ написан
dimonchik2013
@dimonchik2013
non progredi est regredi
обычно imghdr

с битыми джпегами работает неплохо, но не 100%, увы
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы