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

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

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

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

решение1

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

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

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

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

решение2

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

Файлу необходим MIME-тип, чтобы клиент знал, как с ним обращаться.

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

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

На что ответ, вероятно, заключается в том, чтобы сделать проще для людей определить тип файла, глядя на имя. На Windows могут быть и другие причины.

решение3

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

решение4

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

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

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

Связанный контент