Можно ли полагаться на ТИП MIME при проверке с использованием JavaScript, если загруженный файл имеет тип аудио, видео или изображения?

#javascript #mime-types #file-type

#javascript #mime-типы #тип файла

Вопрос:

Я знаю, что с точки зрения безопасности это небезопасно. Но я намерен использовать код javascript для удобства. Итак, просто в качестве первого прохождения. Моя цель — избежать любых ложноположительных результатов, т. Е. Нормально, если злоумышленник манипулировал файлом, чтобы иметь mime-типы, которые я принимаю (потому что я буду выполнять второй проход на стороне сервера), но я я хотел бы предотвратить обнаружение законных файлов как проблемных.

Обновить

Прототип рабочего решения http://jsfiddle.net/tankchintan/5EUjE/1

Ответ №1:

Это нормально, пока вы подтверждаете тип на стороне сервера.

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

Обновить

Похоже, что это просто сопоставление расширений с типами файлов, поскольку код png переименован как mp3 есть mpeg/audio .

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

Комментарии:

1. Я определяю mimetype с помощью javascript, чтобы получить доступ к загружаемому файлу, а затем использую атрибут «type» объекта. Что-то вроде FieldName.files.0.type. итак, я проверяю, содержит ли это значение «video» или «audio».

2. @Chantz интересно, я никогда раньше не видел этот метод. Можете ли вы показать какой-нибудь код?

3. @Chantz приятно, спасибо! У загружаемых файлов есть type атрибут? Не знал этого.

4. @Chantz Очень интересно. Однако я переименовал png файл в mp3 , и он прошел. Возможно, это внутренне просто сопоставление расширений с типами mime.

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