เครื่องตรวจจับประเภทไฟล์ MIME
นามสกุลไฟล์มักให้ข้อมูลที่ไม่ถูกต้อง, ใครก็ตามสามารถเปลี่ยนชื่อไฟล์ malware.exe เป็น photo.jpg ได้ วิธีที่เชื่อถือได้ในการระบุชนิดของไฟล์จริงๆ คือการอ่านไบต์แรกๆ ของไฟล์ โดยรูปแบบไฟล์ส่วนใหญ่มักใส่ “ลายเซ็น” (หรือที่เรียกว่า “หมายเลขมหัศจรรย์”) ซึ่งใช้ระบุรูปแบบของไฟล์โดยไม่ขึ้นอยู่กับชื่อ โปรแกรมตรวจจับนี้จะอ่านลายเซ็นดังกล่าวจากไฟล์ที่ส่งมา และแสดงประเภท MIME ตามมาตรฐานพร้อมกับการจับคู่นามสกุลที่พบบ่อยที่สุด เพื่อให้คุณสามารถตรวจสอบได้ว่าไฟล์ที่อัปโหลดเข้ามาตรงกับสิ่งที่ผู้ใช้งานระบุหรือไม่
กลไกการทำงานของการตรวจจับรูปแบบไฟล์ (MIME)
-
1
วางไฟล์ลง
ไม่ว่าขนาดจะเท่าใด ก็จะมีการอ่านเฉพาะส่วนแรกขนาด 4–16 KB เท่านั้น
-
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 บนฝั่งเซิร์ฟเวอร์ - ความไม่ตรงกันของประเภทเนื้อหา (Content-Type) บราวเซอร์อาจส่งค่า MIME ที่ผิดสำหรับไฟล์ที่อัปโหลดได้ การอ่านไบต์มหัศจรรย์จะช่วยระบุได้ว่าข้อมูลนั้นมีลักษณะอย่างไรในความเป็นจริง
- การกู้คืนข้อมูลสำรอง: ไฟล์ขยายนามสกุลบางครั้งอาจหายไปหรือถูกลบออกไป การตรวจสอบเนื้อหาช่วยให้คุณระบุได้ว่าแต่ละไฟล์เป็นอะไร
ตระกูลไฟล์ที่ใช้ ZIP เป็นพื้นฐาน
ในความเป็นจริงแล้ว รูปแบบข้อมูลสมัยใหม่หลายรูปแบบล้วนเป็นไฟล์อาร์ชีฟแบบ ZIP โดยเริ่มต้นด้วยนามสกุล PK\x03\x04 เช่นเดียวกับไฟล์ ZIP ทั่วไป
- Office Open XML:
.docx,.xlsx,.pptx - OpenDocument:
.odt,.ods,.odp. - รูปแบบ EPUB:
.epub - ไฟล์ APK สำหรับ Android:
.apk - ไฟล์ Java JAR:
.jar
เพื่อแยกแยะระหว่างไฟล์เหล่านี้ เครื่องตรวจจับจะตรวจสอบภายในไฟล์ ZIP เพื่อหาไฟล์ manifest ([Content_Types].xml สำหรับ OOXML และ mimetype สำหรับ ODF/EPUB)
ชุดการรวมที่มีประโยชน์
- ไบต์แรก 512 ไบต์ครอบคลุมลายเซ็นรูปแบบส่วนใหญ่
- ส่วนแรกขนาด 4 KB ครอบคลุมรูปแบบที่ใช้ไฟล์ ZIP โดยไฟล์ manifest จะอยู่ในส่วนท้ายของไฟล์
- ส่วนแรกขนาด 16 KB ครอบคลุมกรณีพิเศษ เช่น คอนเทนเนอร์มัลติมีเดียบางประเภท
ไม่สมบูรณ์แบบนัก
- ไฟล์ข้อความธรรมดาไม่มีไบต์พิเศษใดๆ ตัวตรวจจับจะใช้วิธีการประเมินเชิงประสบการณ์แทน เช่น ไฟล์นั้นเป็น UTF-8 ที่ถูกต้องหรือไม่ และมีลักษณะคล้าย JSON หรือ XML หรือไม่
- ไฟล์ที่ถูกเข้ารหัสหรือบดบังข้อมูลอาจมีรูปลักษณ์คล้ายไบต์สุ่ม โดยไม่มีลายเซ็นที่สามารถระบุได้
- ความไม่แน่นอนของรูปแบบ: ทั้ง
audio/wavและvideo/aviเริ่มต้นด้วยRIFFโดยเครื่องตรวจจับจะตรวจสอบรหัสระบุรอง (เช่นWAVEเทียบกับAVIซึ่งอยู่หลังไป 4 ไบต์)
คำถามที่พบบ่อย
ไม่ กระบวนการตรวจจับจะดำเนินการภายในเบราว์เซอร์ของคุณ โดยจะอ่านข้อมูลเพียงจำนวนไม่กี่ KB เป็นต้นแรกเท่านั้น และนำไปเปรียบเทียบกับฐานข้อมูลลายเซ็นฝั่งไคลเอนต์ ไม่มีข้อมูลใดถูกส่งออกจากอุปกรณ์ของคุณเลย
เนื่องจาก OOXML, ODF, EPUB และ JAR ล้วนเริ่มต้นด้วยลายเซ็น ZIP เครื่องมือตรวจจับจะตรวจสอบภายในเพื่อค้นหาไฟล์ manifest ที่เฉพาะเจาะจงตามรูปแบบของแต่ละไฟล์ และส่งคืนค่า MIME ที่เฉพาะเจาะจงยิ่งขึ้น (application/vnd.openxmlformats-...)
ระบบนี้สามารถตรวจจับการเปลี่ยนชื่ออย่างง่ายๆ ได้ เช่น เมื่อไฟล์ .exe ถูกเปลี่ยนเป็น .jpg ระบบจะแสดงผลว่าไฟล์นั้นเป็นไฟล์ที่สามารถรันได้ตามค่าไบต์พิเศษของมัน ส่วนผู้โจมตีระดับสูงจะฝังข้อมูลที่ต้องการไว้ภายในไฟล์สื่อจริง หรือใช้ไฟล์ที่มีลักษณะหลากหลายซึ่งตรงกับลายเซ็นหลายแบบ ซึ่งทำให้ระบบตรวจจับแบบง่ายไม่สามารถตรวจพบได้
ข้อความธรรมดาไม่มีไบต์พิเศษใดๆ ระบบจะใช้วิธีการตรวจสอบเชิงประสบการณ์ เช่น ข้อมูลเป็น UTF-8 ที่ถูกต้องหรือไม่? เป็น JSON ที่ถูกต้องหรือไม่? เป็นรูปแบบการประกาศ XML หรือไม่? หรือเป็นข้อมูลในรูปแบบ CSV หรือไม่ หากไม่ตรงตามเกณฑ์เหล่านี้ ระบบจะใช้ชุดรหัส text/plain แทน
ฐานข้อมูลลายเซ็นมีลักษณะคล้ายคลึงกัน (สร้างขึ้นจากกฎของไลบรารี libmagic ของยูนิกซ์) ผลลัพธ์ควรตรงกันสำหรับรูปแบบที่พบได้บ่อย แต่สำหรับรูปแบบที่ซับซ้อนหรือกำหนดเองอาจแตกต่างกันได้
เครื่องมือที่เกี่ยวข้อง
ตัวตรวจสอบ API Endpoint
ทดสอบ endpoint แบบ HTTP หรือ HTTPS ที่อนุญาต CORS จากเบราว์เซอร์ พร้อมดูสถานะสุดท้าย เฮดเดอร์ที่เปิดเผย เวลา และตัวอย่างเนื้อหาแบบจำกัดขนาด
เครื่องตรวจสอบอีเมลที่เกี่ยวข้องกับการรั่วไหลของข้อมูล
ตรวจสอบว่าที่อยู่อีเมลดังกล่าวปรากฏในเหตุการณ์การรั่วไหลของข้อมูลที่ทราบแล้วหรือไม่ ตรวจสอบว่าข้อมูลนี้ถูกเปิดเผยในกรณีใดบ้าง และทราบว่าควรเปลี่ยนแปลงข้อมูลส่วนใดก่อน
เครื่องคิดเลข CIDR
คำนวณที่อยู่เครือข่าย การออกอากาศ ช่วงโฮสต์ IP ที่ใช้งานได้ และซับเน็ตมาสก์สำหรับบล็อก IPv4 CIDR
เครื่องตรวจสอบข้อมูล DMARC
สอบถามข้อมูลบันทึก DMARC TXT ของโดเมนใดๆ และวิเคราะห์นโยบาย การจัดเรียงข้อมูล ที่อยู่สำหรับการรายงานผล และอัตราการบังคับใช้ในรูปแบบที่อ่านเข้าใจได้ง่าย
เครื่องทดสอบ CORS
ส่งคำขอ OPTIONS แบบ preflight ไปยัง URL ใดๆ และตรวจสอบ Access-Control-Allow-Origin, header และ method ที่เซิร์ฟเวอร์ตอบกลับ แก้ไขข้อผิดพลาดจากการส่งข้อมูลข้ามแหล่งที่มาได้อย่างรวดเร็ว
โดเมนไปยัง IP
แปลงชื่อโดเมนทุกชื่อให้เป็นที่อยู่ IPv4 (ประเภท A) และ IPv6 (ประเภท AAAA) แล้วนำไปใช้ในเครื่องมือเครือข่ายใดก็ได้
เครื่องมือนี้มีให้บริการในภาษาอื่น
- Detector de tipo MIME [ES]
- Détecteur de type MIME [FR]
- MIMEタイプ検出器 [JA]
- Detector de Tipo MIME [PT]
- MIME-typdetektor [SV]
- Bộ phát hiện loại MIME [VI]
- أداة كشف نوع ملفات MIME [AR]
- MIME-Typ-Detektor [DE]
- MIME 타입 감지기 [KO]
- Detektor Jenis MIME [ID]
- MIME-type detector [NL]
- Detektor typu MIME [PL]
- Определение MIME-типа файла [RU]
- MIME Tür Tespit Cihazı [TR]
- MIME类型检测器 [ZH]
- MIME Type Detector [EN]
- Rilevatore di tipo MIME [IT]