MIME-type detector
Bestandsextensies kunnen misleiden: iedereen kan een bestand met de extensie malware.exe hernoemen tot photo.jpg. De betrouwbare manier om te bepalen wat een bestand echt is, is het lezen van de eerste paar bytes; bij de meeste formaten bevindt zich daar een signatuur (‘magische nummer’) die het formaat identificeert, onafhankelijk van de naam. Deze detector leest het signatuur van elk bestand en retourneert de standaard-MIME-type samen met de meest gebruikelijke extensiemapping, zodat u kunt controleren of een upload daadwerkelijk overeenkomt met wat de klant heeft aangegeven.
Hoe MIME-detectie werkt
-
1
Een bestand neerzetten
Elke grootte; alleen de eerste 4–16 KB worden gelezen.
-
2
Lees magische bytes
De meeste formaten beginnen met een bekende signatuur.
-
3
Vergelijk met een signatuurdatabase
De detector gebruikt dezelfde regels als `file(1)`/libmagic.
-
4
MIME + extensie retourneren
Toont de mediatype volgens RFC 6838, de canonieke extensie en een handmatig gekozen label.
Voorbeeldsignatuur
| Format | Eerste 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 |
25 50 44 46 (%PDF) |
application/pdf |
|
| ZIP / JAR / ODT / DOCX | 50 4B 03 04 |
application/zip (of specifiek) |
| gzip | 1F 8B 08 |
application/gzip |
| MP4 (ISO BMFF) | 00 00 00 XX 66 74 79 70 |
video/mp4 |
| MP3 | 49 44 33 of FF FB |
audio/mpeg |
| FLAC | 66 4C 61 43 |
audio/flac |
| WAV | 52 49 46 46 ... 57 41 56 45 |
audio/wav |
| ELF (Linux-binair bestand) | 7F 45 4C 46 |
application/x-executable |
| Windows PE (exe) | 4D 5A |
application/x-msdownload |
Waarom extensies niet voldoende zijn
- Beveiliging: Een geüpload
resume.pdfdat in werkelijkheid een.exeis, omzeilt eenvoudige extensiefilters. De oplossing is servergebaseerde MIME-detectie. - Onovereenkomst in Content-Type: Een browser kan een onjuiste MIME-code versturen bij het uploaden van gegevens; het lezen van magic bytes geeft aan wat de gegevens daadwerkelijk zijn.
- Herstelde back-ups: Extensies kunnen soms verloren gaan of worden verwijderd; met content-analyse kunt u bepalen wat elke bestand inhoudt.
De op ZIP gebaseerde familie
Veel moderne formaten zijn in feite ZIP-archieven; ze beginnen met een extensie als PK\x03\x04, net zoals alle andere ZIP-bestanden.
– Office Open XML: .docx, .xlsx, .pptx.
- OpenDocument:
.odt,.ods,.odp. - EPUB:
.epub. - Android APK:
.apk - Java JAR:
.jar.
Om ze te onderscheiden, onderzoekt de detector de inhoud van het ZIP-bestand op een manifestbestand ([Content_Types].xml voor OOXML, mimetype voor ODF/EPUB).
Nuttige combinaties
- De eerste 512 bytes omvatten de meeste formaatsignatuurpatronen.
- De eerste 4 KB omvat ZIP-baserde formaten waarin het manifest verder in het bestand te vinden is.
- De eerste 16 KB omvat uitzonderlijke gevallen, zoals bepaalde multimediabestanden.
Niet perfect
- Eenvoudige tekstbestanden bevatten geen magische bytes. De detector maakt gebruik van heuristieke methoden (is het geldig als UTF-8? lijkt het op JSON of XML?).
- Geëncodeerde/verduisterde bestanden kunnen eruit zien als willekeurige bytes zonder herkenbare signatuur.
– Formatonzekerheid: Zowel
audio/wavalsvideo/avibeginnen metRIFF; de detector controleert de secundaire identificator (WAVEversusAVI, vier bytes later).
Veelgestelde vragen
Nee, de detectie verloopt in uw browser: alleen de eerste paar KB worden gelezen en vergeleken met een signatuurbank op de clientzijde. Er wordt niets van uw apparaat afgeleverd.
Aangezien OOXML, ODF, EPUB en JAR allemaal beginnen met de ZIP-signatuur, onderzoekt de detector de inhoud om het formaatspecifieke manifest te vinden en retourneert de meer specifieke MIME-code (application/vnd.openxmlformats-...).
Het detecteert naïeve hernoeming: een bestand met de naam .exe dat wordt hernoemd tot .jpg verschijnt als uitvoerbare bestand op basis van zijn specifieke bytepatronen. Geavanceerde aanvallers plaatsen payloads in echte mediabestanden of gebruiken polyglote bestanden die passen bij meerdere detectiepatronen; hierdoor kunnen eenvoudige detectiemethoden worden omzeild.
Eenvoudige tekst bevat geen magische bytes. De detector gebruikt heuristieke algoritmen: geldig UTF-8? geldig JSON? XML-declaratie? CSV-structuur? In alle overige gevallen wordt text/plain gebruikt als standaardcode.
De signatuurdatabase is vergelijkbaar (afgeleid van de regels van Unix libmagic). De resultaten moeten overeenkomen voor veelvoorkomende formaten; voor onduidelijke of aangepaste formaten kunnen er afwijkingen optreden.
Gerelateerde tools
Domeinleeftijd controleren
Controleer wanneer een domein voor het eerst is geregistreerd en hoe oud het is in jaren, maanden en dagen, aan de hand van WHOIS-gegevens uit het register.
Domein naar IP-adres
Zet elke domeinnaam om in zijn IPv4-adres (A) en IPv6-adres (AAAA) en kopieer ze naar elk netwerkprogramma.
CIDR-calculator
Bereken netwerkadres, uitzending, hostbereik, bruikbare IP's en subnetmasker voor elk IPv4 CIDR-blok.
Datalek-e-mailcontrole
Controleer of een e-mailadres is opgedoken in een bekend datalek, zie in welke lekken het is blootgesteld en ontdek wat u als eerste moet wijzigen.
API-endpointchecker
Test vanuit je browser een HTTP- of HTTPS-endpoint dat CORS toestaat. Bekijk eindstatus, vrijgegeven headers, tijd en een begrensde body-preview.
CORS-tester
Stuur een preflight-OPTIONS-verzoek naar elke URL en bekijk Access-Control-Allow-Origin, de headers en methoden die de server teruggeeft. Diagnosticeer cross-origin-fouten snel.
Tool beschikbaar in andere talen
- Detector de tipo MIME [ES]
- MIMEタイプ検出器 [JA]
- أداة كشف نوع ملفات MIME [AR]
- Detektor typu MIME [PL]
- Detector de Tipo MIME [PT]
- เครื่องตรวจจับประเภทไฟล์ MIME [TH]
- Bộ phát hiện loại MIME [VI]
- MIME-Typ-Detektor [DE]
- Détecteur de type MIME [FR]
- Detektor Jenis MIME [ID]
- MIME 타입 감지기 [KO]
- MIME-typdetektor [SV]
- MIME Tür Tespit Cihazı [TR]
- MIME类型检测器 [ZH]
- MIME Type Detector [EN]
- Rilevatore di tipo MIME [IT]
- Определение MIME-типа файла [RU]