MIME-Typ-Detektor

Weiter

Dateiendungen täuschen, jeder kann malware.exe in photo.jpg umbenennen. Der zuverlässige Weg, um zu wissen, was eine Datei wirklich ist, besteht darin, die ersten paar Bytes zu lesen, in denen die meisten Formate eine Signatur (“magische Zahl”) hinterlegen, die das Format unabhängig vom Namen identifiziert. Dieser Detektor liest die Signatur jeder abgelegten Datei und gibt den kanonischen MIME-Typ sowie die gängigste Erweiterungszuordnung zurück, damit Sie überprüfen können, ob ein Upload dem entspricht, was der Client angibt.

Wie die MIME-Erkennung funktioniert

  1. 1

    Datei ablegen

    Jede Größe; nur die ersten 4–16 KB werden gelesen.

  2. 2

    Magische Bytes lesen

    Die meisten Formate beginnen mit einer bekannten Signatur.

  3. 3

    Gegen eine Signaturdatenbank abgleichen

    Der Detektor verwendet die gleichen Regeln wie `file(1)` / libmagic.

  4. 4

    MIME + Erweiterung zurückgeben

    Zeigt den RFC 6838 Medientyp, die kanonische Erweiterung und ein menschliches Label an.

Beispielsignaturen

Format Erste Bytes (hex) 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
PDF 25 50 44 46 (%PDF) application/pdf
ZIP / JAR / ODT / DOCX 50 4B 03 04 application/zip (oder spezifisch)
gzip 1F 8B 08 application/gzip
MP4 (ISO BMFF) 00 00 00 XX 66 74 79 70 video/mp4
MP3 49 44 33 oder FF FB audio/mpeg
FLAC 66 4C 61 43 audio/flac
WAV 52 49 46 46 ... 57 41 56 45 audio/wav
ELF (Linux-Binärdatei) 7F 45 4C 46 application/x-executable
Windows PE (exe) 4D 5A application/x-msdownload

Warum Erweiterungen nicht ausreichen

  • Sicherheit. Ein hochgeladenes resume.pdf, das tatsächlich eine .exe ist, umgeht naive Erweiterungsfilter. Die serverseitige MIME-Erkennung ist die Lösung.
  • Content-Type-Mismatch. Ein Browser kann den falschen MIME-Typ für einen Upload senden; das Lesen der magischen Bytes sagt Ihnen, was die Daten tatsächlich sind.
  • Wiederhergestellte Backups. Erweiterungen gehen manchmal verloren oder werden entfernt; Content-Sniffing ermöglicht es Ihnen, zu identifizieren, was jede Datei ist.

Die ZIP-basierte Familie

Viele moderne Formate sind ZIP-Archive im Hintergrund, sie beginnen mit PK\x03\x04 wie jedes ZIP:

  • Office Open XML: .docx, .xlsx, .pptx.
  • OpenDocument: .odt, .ods, .odp.
  • EPUB: .epub.
  • Android APK: .apk.
  • Java JAR: .jar.

Um sie zu unterscheiden, schaut der Detektor in das ZIP nach einer Manifestdatei ([Content_Types].xml für OOXML, mimetype für ODF / EPUB).

Nützliche Kombinationen

  • Die ersten 512 Bytes decken die meisten Formatsignaturen ab.
  • Die ersten 4 KB decken ZIP-basierte Formate ab, bei denen das Manifest weiter hinten erscheint.
  • Die ersten 16 KB decken Randfälle wie einige Multimedia-Container ab.

Nicht perfekt

  • Reine Textdateien haben keine magischen Bytes. Der Detektor greift auf Heuristiken zurück (ist es gültiges UTF-8? sieht es aus wie JSON oder XML?).
  • Verschlüsselte / obfuskierten Dateien können wie zufällige Bytes ohne erkennbare Signatur aussehen.
  • Formatambiguität. audio/wav und video/avi beginnen beide mit RIFF; der Detektor überprüft den sekundären Identifikator (WAVE vs. AVI vier Bytes später).

Häufig gestellte Fragen

Nein. Die Erkennung erfolgt in Ihrem Browser, nur die ersten paar KB werden gelesen und mit einer clientseitigen Signaturdatenbank abgeglichen. Nichts verlässt Ihr Gerät.

Weil OOXML, ODF, EPUB und JAR alle mit der ZIP-Signatur beginnen. Der Detektor schaut hinein, um die formatspezifische Manifestdatei zu finden und den spezifischeren MIME-Typ zurückzugeben (application/vnd.openxmlformats-...).

Es erkennt naive Umbenennungen, eine .exe, die in .jpg umbenannt wurde, wird durch ihre magischen Bytes als ausführbar angezeigt. Anspruchsvolle Angreifer betten Payloads in echte Mediendateien ein oder verwenden Polyglot-Dateien, die mit mehreren Signaturen übereinstimmen; diese überwinden einfache Erkennung.

Reiner Text hat keine magischen Bytes. Der Detektor verwendet Heuristiken: gültiges UTF-8? gültiges JSON? XML-Deklaration? CSV-Struktur? Andernfalls fällt er auf text/plain zurück.

Die Signaturdatenbank ist ähnlich (abgeleitet von Unix libmagic-Regeln). Die Ergebnisse sollten für gängige Formate übereinstimmen. Obskure oder benutzerdefinierte Formate können abweichen.

Verwandte Tools

Tool in anderen Sprachen verfügbar