Назад | Перейти на главную страницу

Зачем нужны типы MIME, если мы можем идентифицировать типы файлов по их расширениям?

Если компьютеры людей могут решать, что делать с файлами на основе их расширений (.pdf, .mp3, .docx, .dotx и т. Д.), Почему веб-серверы и почтовые приложения также должны указывать тип MIME?

Я вижу, что это полезно, если вы хотите доставить файл способом, отличным от стандартного (например, показывать файл .py или .html как простой текст) или если расширение файла не зарегистрировано на клиентском компьютере, но в большинстве случаев В некоторых случаях, если я создаю новый формат файла (например, .foobaz) и хочу, чтобы люди могли обмениваться этими файлами в Интернете и по электронной почте, разве не должно быть достаточно полагаться на то, что клиент распознает расширение файла?

Вы неправильно смотрите на это.

Файлу нужен mimetype, чтобы клиент знал, как обращаться с файлом.

Ваш вопрос должен быть и наоборот:

Зачем нам нужны расширения файлов, если мы можем идентифицировать типы файлов по типу mime?

Ответ на этот вопрос, вероятно, прост: людям легче определить, к какому типу относится файл, по имени. В Windows могут быть другие причины.

Тип Mime четко указывает предполагаемое использование файла. Расширения файлов только намекают на содержание. Оба могут ошибаться. DOC использовался рядом текстовых редакторов с различными внутренними форматами файлов.

Поддельные расширения широко используются, чтобы ввести людей в заблуждение как тип файла. Это может быть использовано для различного рода вредоносных программ. Это также может привести к ошибкам безопасности. Если myfile.txt будет проверен на безопасность как текстовый файл, а затем путем проверки содержимого будет запущен как исполняемый файл, вы можете получить зараженную машину.

Unix использует исполняемый бит, чтобы указать, какой файл можно запустить. Скрипты могут начинаться с прямого пути, указывающего, какой интерпретатор должен их выполнить. Команду file можно использовать для достаточно надежного определения типа файла с расширением или без него.

Использование расширений для определения того, какой файл используется, может привести к двусмысленности. Если у меня есть myfile.exe, myfile.com, myfile.bat и myfile.cmd, который запускается, если я запускаю команду myfile.

Это происходит только в мире Windows в файлах мира unix, которые не обязательно должны иметь расширение, они идентифицируются типом mime.

Поскольку небольшие и сделанные на заказ (специально разработанные) приложения, как правило, довольно либеральны в отношении своих расширений файлов. Это может привести к расширению файлов, которые используются для представления файлов нескольких типов.

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

Помимо типов MIME существуют и другие системы идентификации файлов, например Magic Numbers. Это означает, что расширения файлов не нужны. Расширения файлов также могут быть переименованы пользователями, которые не могут открыть файлы, что означает, что они, вероятно, обратятся в службу поддержки.

Потому что пользователи тупые и все время переименовывают файлы. Вы не можете доверять правильному названию имени файла. Меня все еще поражает количество людей, которые переименовывают someFile.xltm в someFile.xls, а затем задаются вопросом, почему их шаблон электронной таблицы не работает. Использование имен файлов в MS для определения типа содержимого является слабым местом и угрозой безопасности.