เครื่องตรวจจับประเภทไฟล์ MIME

ถัดไป

นามสกุลไฟล์มักให้ข้อมูลที่ไม่ถูกต้อง, ใครก็ตามสามารถเปลี่ยนชื่อไฟล์ malware.exe เป็น photo.jpg ได้ วิธีที่เชื่อถือได้ในการระบุชนิดของไฟล์จริงๆ คือการอ่านไบต์แรกๆ ของไฟล์ โดยรูปแบบไฟล์ส่วนใหญ่มักใส่ “ลายเซ็น” (หรือที่เรียกว่า “หมายเลขมหัศจรรย์”) ซึ่งใช้ระบุรูปแบบของไฟล์โดยไม่ขึ้นอยู่กับชื่อ โปรแกรมตรวจจับนี้จะอ่านลายเซ็นดังกล่าวจากไฟล์ที่ส่งมา และแสดงประเภท MIME ตามมาตรฐานพร้อมกับการจับคู่นามสกุลที่พบบ่อยที่สุด เพื่อให้คุณสามารถตรวจสอบได้ว่าไฟล์ที่อัปโหลดเข้ามาตรงกับสิ่งที่ผู้ใช้งานระบุหรือไม่

กลไกการทำงานของการตรวจจับรูปแบบไฟล์ (MIME)

  1. 1

    วางไฟล์ลง

    ไม่ว่าขนาดจะเท่าใด ก็จะมีการอ่านเฉพาะส่วนแรกขนาด 4–16 KB เท่านั้น

  2. 2

    อ่านไบต์มหัศจรรย์

    รูปแบบส่วนใหญ่เริ่มต้นด้วยลายเซ็นที่ทราบแน่ชัด

  3. 3

    การเปรียบเทียบกับฐานข้อมูลลายเซ็น

    เครื่องตรวจจับนี้ใช้กฎเดียวกันกับ `file(1)` / libmagic

  4. 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
PDF 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) แล้วนำไปใช้ในเครื่องมือเครือข่ายใดก็ได้

เครื่องมือนี้มีให้บริการในภาษาอื่น