Определение MIME-типа файла
Расширения файлов лгут, любой может переименовать файл malware.exe в photo.jpg. Надёжный способ определить истинный формат файла, прочитать его первые несколько байтов: большинство форматов содержат в них подпись («магическое число»), которая уникально идентифицирует формат независимо от его названия. Данный детектор анализирует эту подпись, определяет стандартный тип MIME и указывает наиболее распространённое соответствующее расширение, позволяя проверить, соответствует ли загруженный файл заявленному клиентом формату.
Как работает обнаружение формата MIME
-
1
Перетащите файл
Любого размера; считываются только первые 4–16 КБ.
-
2
Чтение магических байтов
Большинство форматов начинаются с известной подписи.
-
3
Сравнение с базой подписей
Детектор использует те же правила, что и `file(1)` / libmagic.
-
4
Вернуть MIME-тип и расширение
Показывает тип медиа по RFC 6838, каноническое расширение и человеческое описание.
Примеры подписей
| Формат | Первые байты (в шестнадцатеричном формате) | MIME |
|---|---|---|
| JPEG | FF D8 FF |
image/jpeg |
| PNG | 89 50 4E 47 0D 0A 1A 0A |
image/png |
| GIF87a | 47 49 46 38 37 61 |
image/gif |
| GIF89a | 47 49 46 38 39 61 |
image/gif |
| WebP | 52 49 46 46 ... 57 45 42 50 |
image/webp |
25 50 44 46 (%PDF) |
application/pdf |
|
| ZIP / JAR / ODT / DOCX | 50 4B 03 04 |
application/zip (или конкретный файл) |
| gzip | 1F 8B 08 |
application/gzip |
| MP4 (ISO BMFF) | 00 00 00 XX 66 74 79 70 |
video/mp4 |
| MP3 | 49 44 33 или FF FB |
audio/mpeg |
| FLAC | 66 4C 61 43 |
audio/flac |
| WAV | 52 49 46 46 ... 57 41 56 45 |
audio/wav |
| ELF (бинарный файл для Linux) | 7F 45 4C 46 |
application/x-executable |
| Windows PE (exe) | 4D 5A |
application/x-msdownload |
Почему расширений недостаточно
– Безопасность: Загруженный файл resume.pdf (на самом деле это .exe) обходит простые фильтры расширений; решение кроется в механизме обнаружения формата MIME на стороне сервера.
– Несоответствие типа содержимого: браузер может отправить неверный формат MIME при загрузке; анализ магических байтов позволяет определить истинный тип данных.
– Восстановленные резервные копии. Расширения иногда могут быть утеряны или удалены; функция анализа содержимого позволяет определить тип каждого файла.
Семейство форматов на основе ZIP
Большинство современных форматов по сути представляют собой архивы в формате ZIP, они начинаются с сигнатуры PK\x03\x04, как и любой ZIP-архив.
– Office Open XML: .docx, .xlsx, .pptx.
- OpenDocument:
.odt,.ods,.odp. – В формате EPUB:.epub. – АПК для Android:.apk. – Java JAR-файл:.jar.
Для их различения детектор просматривает содержимое файла ZIP в поисках файла манифеста ([Content_Types].xml для формата OOXML, mimetype, для форматов ODF/EPUB).
Полезные комбинации
– Первые 512 байтов охватывают большинство форматных подписей. – Первые 4 КБ охватывают форматы, основанные на ZIP-файлах, в которых манифест расположен позже в файле. – Первые 16 КБ охватывают специальные случаи использования, такие как некоторые мультимедийные контейнеры.
Не идеально
- Файлы в обычном текстовом формате не содержат магических байтов; в таких случаях детектор использует эвристические методы проверки (отвечает ли файл требованиям формата UTF-8, напоминает ли он JSON или XML).
– Зашифрованные или обезличенные файлы могут выглядеть как случайные байты без узнаваемой подписи.
– Неоднозначность формата: оба кода
audio/wavиvideo/aviначинаются сRIFF; детектор проверяет вторичный идентификатор (WAVEпротивAVI, расположенного на четырех байтах позже).
Часто задаваемые вопросы
Нет. Процесс обнаружения выполняется в вашем браузере: считываются лишь первые несколько килобайт данных и сравниваются с базой подписей на стороне клиента. Ни один из этих данных не покидает вашего устройства.
Поскольку форматы OOXML, ODF, EPUB и JAR все начинаются с сигнатуры ZIP, детектор анализирует содержимое файлов для поиска специфического для каждого формата манифеста и возвращает более точный код MIME (application/vnd.openxmlformats-...).
Система обнаруживает наивные изменения названий: файл с именем .exe, изменённый в .jpg, будет распознан как исполняемый по своим специфическим байтам. Сложные злоумышленники встраивают полезные данные в реальные медиафайлы или используют многоязычные файлы, соответствующие нескольким сигнатурам; такие методы позволяют обойти простые механизмы обнаружения.
В обычном тексте отсутствуют магические байты. Детектор использует эвристические критерии: является ли текст допустимым в формате UTF-8, JSON, XML или CSV; в противном случае используется кодировка text/plain.
База данных подписей является аналогичной (получена на основе правил Unix libmagic); результаты должны совпадать для стандартных форматов, тогда как для нестандартных или пользовательских форматов результаты могут отличаться.
Сопутствующие инструменты
Детектор информации браузера
Посмотрите, что сообщает ваш браузер: user agent, engine, version, OS, тип устройства, разрешение экрана, timezone, language и public IP.
Инструмент проверки возраста доменных имен
Узнайте, когда домен был впервые зарегистрирован, а также его возраст в годах, месяцах и днях с использованием данных WHOIS из реестра.
Проверка API-эндпоинта
Проверьте в браузере HTTP- или HTTPS-эндпоинт с разрешённым CORS: итоговый статус, доступные заголовки, время и ограниченный предпросмотр тела.
Тестер системы CORS
Отправьте предварительный (preflight) запрос OPTIONS по любому URL и проверьте Access-Control-Allow-Origin, заголовки и методы, возвращаемые сервером. Быстро устраняйте ошибки при обработке кросс-оригинальных запросов.
Проверка HTTP/2 и HTTP/3
Локально анализируйте вставленные заголовки ответа, чтобы определить наблюдаемую версию HTTP и объявление HTTP/3 в Alt-Svc.
CIDR-калькулятор
Рассчитайте сетевой адрес, широковещательную рассылку, диапазон хостов, используемые IP-адреса и маску подсети для любого блока IPv4 CIDR.
Инструмент доступен на других языках
- Detector de tipo MIME [ES]
- MIMEタイプ検出器 [JA]
- Detector de Tipo MIME [PT]
- MIME 타입 감지기 [KO]
- Détecteur de type MIME [FR]
- MIME-typdetektor [SV]
- Bộ phát hiện loại MIME [VI]
- Detektor Jenis MIME [ID]
- เครื่องตรวจจับประเภทไฟล์ MIME [TH]
- أداة كشف نوع ملفات MIME [AR]
- MIME-Typ-Detektor [DE]
- MIME-type detector [NL]
- Detektor typu MIME [PL]
- MIME Tür Tespit Cihazı [TR]
- MIME类型检测器 [ZH]
- MIME Type Detector [EN]
- Rilevatore di tipo MIME [IT]