Типы файлов
Коротко: Категории файлов, определяющие, как структурировано их содержимое и какие программы могут их открывать, — например, текст, изображение, видео или архив.
Подробнее: Тип файла обычно обозначается расширением (.txt, .jpg, .zip), но достоверно определяется только по фактическому байтовому содержимому (магические числа/сигнатура в начале файла) — переименованный файл сохраняет свой настоящий тип, даже если расширение подсказывает иное.
Подробности
Простой пример разницы между расширением файла и настоящим типом: изображение PNG внутри всегда начинается с одних и тех же восьми байт (89 50 4E 47 0D 0A 1A 0A) — как бы ни назывался файл. Если переименовать image.png в image.txt, содержимое останется допустимым PNG; только программы, слепо полагающиеся на расширение, ошибочно сочтут его текстовым файлом.
Грубые категории типов файлов:
- Текстовые: читаемые человеком как простой текст, например
.txt,.md,.csv, JSON, XML. - Двоичные (binary): осмысленно интерпретируются только подходящей программой, например изображения (
.png,.jpg), видео, скомпилированные программы. - Архивы/контейнеры: объединяют или сжимают несколько файлов в один, например ZIP,
.tar. - Структурированные форматы Office: внутри часто сами являются ZIP-архивом из файлов XML, например
.docx,.xlsx.
Многие проблемы безопасности возникают именно здесь: загруженный файл с расширением .jpg, фактическое содержимое которого — исполняемый код, может быть ошибочно признан безобидным сервером, проверяющим только расширение, — поэтому надёжные системы загрузки дополнительно проверяют настоящую сигнатуру в начале файла.
См. также: Файлы