SVG 원본을 바꾸지 않고 이름만 not-a-jpeg.jpg로 복사하자 file은 여전히 SVG, MIME은 image/svg+xml로 판정했습니다. 확장자 변경은 인코딩 변환이 아닙니다.
확인 방법
- ToolNuri의 SVG 소셜 이미지를 원본 바이트 그대로 복사했습니다.
- 복사본 파일명만 not-a-jpeg.jpg로 지정했습니다.
- macOS file로 설명형 판정과 MIME 판정을 각각 확인했습니다.
파일명은 JPG, 내용은 SVG였다
검사 결과는 ‘SVG Scalable Vector Graphics image’였고 MIME 판정은 image/svg+xml이었습니다. 이름 끝의 .jpg는 바이트를 JPEG 구조로 다시 쓰지 않았습니다.
| 확인 항목 | 결과 |
|---|---|
| 파일명 | not-a-jpeg.jpg |
| file 설명 | SVG Scalable Vector Graphics image |
| MIME 판정 | image/svg+xml |
| 실제 변환 | 없음 |
왜 업로드 검사에서 둘 다 봐야 할까
서버가 확장자만 믿고 브라우저는 내용 바이트를 다른 형식으로 해석하면 보안 문제가 생길 수 있습니다. WHATWG MIME Sniffing 표준도 PNG, JPEG, GIF, WebP와 ZIP 같은 형식을 시작 바이트 패턴으로 구분하는 절차를 정의합니다.
반대로 내용 검사만으로도 파일이 안전하다고 단정할 수 없습니다. 허용할 형식의 구조를 실제 파서로 읽고, 크기와 처리 한도를 제한해야 합니다.
변환과 이름 변경을 구분한다
이미지를 JPG로 바꾸려면 SVG를 렌더링해 JPEG 인코더로 새 바이트를 만들어야 합니다. 이 과정에서는 투명도, 글꼴, 색상 프로필과 픽셀 크기가 바뀔 수 있으므로 원본을 별도로 남깁니다.
확인한 1차 자료
- WHATWG MIME Sniffing Standard (2026-10-01 확인)
- IANA Media Types (2026-10-01 확인)