MIME 타입 감지기
파일 확장자는 거짓말을 합니다, 누구나 malware.exe를 photo.jpg로 바꿀 수 있습니다. 파일이 정말 무엇인지 아는 믿을 만한 방법은 처음 몇 바이트를 읽는 것입니다. 대부분의 형식이 거기에 이름과 무관하게 형식을 식별하는 시그니처(“매직 넘버”)를 넣습니다. 이 감지기는 드롭한 파일의 시그니처를 읽어 표준 MIME 타입과 가장 흔한 확장자 매핑을 반환하므로, 업로드가 클라이언트가 주장하는 것과 같은지 검증할 수 있습니다.
MIME 감지 작동 방식
-
1
파일 드롭
어떤 크기든. 처음 4~16KB만 읽습니다.
-
2
매직 바이트 읽기
대부분의 형식이 알려진 시그니처로 시작합니다.
-
3
시그니처 데이터베이스와 대조
감지기는 `file(1)` / libmagic과 같은 규칙을 씁니다.
-
4
MIME + 확장자 반환
RFC 6838 미디어 타입, 표준 확장자, 사람이 읽는 라벨을 보여줍니다.
예시 시그니처
| 형식 | 첫 바이트(16진) | 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 |
확장자만으로 부족한 이유
- 보안. 실제로는
.exe인 업로드된resume.pdf는 순진한 확장자 필터를 우회합니다. 서버 측 MIME 감지가 해결책입니다. - Content-Type 불일치. 브라우저가 업로드에 잘못된 MIME을 보낼 수 있습니다. 매직 바이트를 읽으면 데이터가 실제로 무엇인지 알 수 있습니다.
- 복원된 백업. 확장자는 때때로 사라지거나 제거됩니다. 콘텐츠 스니핑으로 각 파일이 무엇인지 식별할 수 있습니다.
ZIP 기반 계열
많은 현대 형식이 내부적으로 ZIP 아카이브입니다, 어떤 ZIP처럼 PK\x03\x04로 시작합니다:
- Office Open XML:
.docx,.xlsx,.pptx. - OpenDocument:
.odt,.ods,.odp. - EPUB:
.epub. - Android APK:
.apk. - Java JAR:
.jar.
이들을 구분하려고 감지기는 ZIP 안의 매니페스트 파일(OOXML은 [Content_Types].xml, ODF / EPUB는 mimetype)을 들여다봅니다.
유용한 조합
- 처음 512바이트가 대부분의 형식 시그니처를 다룹니다.
- 처음 4KB가 매니페스트가 더 안쪽에 나타나는 ZIP 기반 형식을 다룹니다.
- 처음 16KB가 일부 멀티미디어 컨테이너 같은 엣지 케이스를 다룹니다.
완벽하지 않음
- 평문 파일은 매직 바이트가 없습니다. 감지기는 휴리스틱으로 폴백합니다(유효한 UTF-8인가? JSON이나 XML처럼 보이는가?).
- 암호화/난독화된 파일은 인식 가능한 시그니처 없이 무작위 바이트처럼 보일 수 있습니다.
- 형식 모호성.
audio/wav와video/avi둘 다RIFF로 시작합니다. 감지기는 보조 식별자(4바이트 뒤의WAVE대AVI)를 확인합니다.
자주 묻는 질문
아니요. 감지는 브라우저에서 실행됩니다, 처음 몇 KB만 읽어 클라이언트 측 시그니처 데이터베이스와 대조합니다. 아무것도 기기를 떠나지 않습니다.
OOXML, ODF, EPUB, JAR 모두 ZIP 시그니처로 시작하기 때문입니다. 감지기가 안을 들여다보고 형식별 매니페스트를 찾아 더 구체적인 MIME(application/vnd.openxmlformats-...)을 반환합니다.
순진한 이름 변경은 잡습니다, .jpg로 바꾼 .exe는 매직 바이트로 실행 파일로 표시됩니다. 정교한 공격자는 실제 미디어 파일 안에 페이로드를 숨기거나 여러 시그니처에 맞는 폴리글랏 파일을 써서 단순 감지를 무력화합니다.
평문은 매직 바이트가 없습니다. 감지기는 휴리스틱을 실행합니다: 유효한 UTF-8? 유효한 JSON? XML 선언? CSV 구조? 그 외에는 text/plain으로 폴백합니다.
시그니처 데이터베이스가 유사합니다(Unix libmagic 규칙에서 파생). 흔한 형식은 결과가 일치해야 합니다. 모호하거나 사용자 지정 형식은 다를 수 있습니다.
관련 도구
도메인 나이 검사
등록부의 WHOIS 데이터를 사용하여 도메인이 처음 등록된 시점과 그 연·월·일 기준의 운영 기간을 확인하십시오.
도메인에서 IP로
모든 도메인 이름을 해당 도메인의 IPv4(A) 및 IPv6(AAAA) 주소로 변환하고, 이를 복사해 어떤 네트워크 도구에서든 사용할 수 있습니다.
CIDR 계산기
임의의 IPv4 CIDR 블록에 대해 네트워크 주소, 브로드캐스트 주소, 호스트 범위, 사용 가능한 IP 주소 및 서브넷 마스크를 계산하세요.
IP 주소 조회
공인 IPv4 또는 IPv6 주소로 대략적인 국가, 지역, 도시, 좌표, ISP, ASN, 조직, 시간대를 확인하세요.
데이터 유출 이메일 검사기
이메일 주소가 알려진 데이터 유출 사례에 포함되어 있는지 확인하고, 해당 정보가 어느 사건에서 유출되었는지 파악한 후 우선적으로 어떤 정보를 교체해야 하는지 알아보세요.
브라우저 정보 감지기
브라우저가 보고하는 user agent, 엔진, 버전, OS, 기기 유형, 화면 해상도, 시간대, 언어, 공인 IP를 확인합니다.
이 도구는 다른 언어로도 제공됩니다
- เครื่องตรวจจับประเภทไฟล์ MIME [TH]
- Detektor typu MIME [PL]
- Detector de tipo MIME [ES]
- أداة كشف نوع ملفات MIME [AR]
- MIME-Typ-Detektor [DE]
- MIMEタイプ検出器 [JA]
- Detector de Tipo MIME [PT]
- Détecteur de type MIME [FR]
- MIME-typdetektor [SV]
- Bộ phát hiện loại MIME [VI]
- Detektor Jenis MIME [ID]
- MIME-type detector [NL]
- MIME Type Detector [EN]
- Rilevatore di tipo MIME [IT]
- Определение MIME-типа файла [RU]
- MIME Tür Tespit Cihazı [TR]
- MIME类型检测器 [ZH]