DevTool Hub
Guide

MIME 타입 이해하기: 확장자만 믿지 마세요

MIME 타입의 역할과 확장자만으로 충분하지 않은 이유를 정리합니다.

작성자: DevTool Hub게시일: 2026-03-01업데이트: 2026-03-01읽는 시간: 약 2

목차

MIME 타입 이해하기: 확장자만 믿지 마세요

MIME 타입은 브라우저와 서버가 콘텐츠 형식을 합의하는 방식입니다. 확장자만으로 판단하면 보안 문제와 호환성 문제가 동시에 생길 수 있습니다. 특히 업로드 기능, CDN, 다운로드 응답, 정적 파일 서빙에서는 MIME 타입이 예상과 다르면 동작이 크게 달라집니다.

1) MIME 타입의 역할

  • 브라우저가 파일을 어떻게 처리할지 결정
  • 다운로드 vs 인라인 표시를 제어
  • 파일 업로드 검증에 활용

2) 확장자만으로 부족한 이유

  • 파일 확장자는 쉽게 변경 가능
  • 실제 파일 시그니처와 다를 수 있음
  • 보안상 우회가 가능
  • 운영 중 잘못된 Content-Type 헤더가 내려갈 수 있음

3) 실무 팁

  • 서버에서 Content-Type을 명시적으로 설정하세요.
  • 업로드 검증 시 확장자 + 시그니처(매직 넘버)를 함께 확인하세요.
  • 캐시/CDN에서 MIME이 올바르게 전달되는지 점검하세요.
  • 브라우저 스니핑에 기대지 말고 헤더를 정확히 내려주세요.

4) 바로 써보기

MIME Type Finder에 확장자나 MIME 타입을 넣어 매핑을 빠르게 확인하세요.

5) 대표 매핑 예시

  • .pngimage/png
  • .svgimage/svg+xml
  • .jsonapplication/json
  • .pdfapplication/pdf

6) 보안 관련 팁

  • 업로드 시 MIME만 믿지 말고 파일 시그니처를 확인하세요.
  • 브라우저에 잘못된 MIME을 보내면 XSS 위험이 커집니다.

예를 들어 SVG는 이미지처럼 보이지만 스크립트를 포함할 수 있어 취급이 민감합니다. 단순히 .svg 확장자라고 해서 무조건 안전한 이미지로 보면 안 됩니다. 다운로드로 처리할지, 인라인 렌더링을 허용할지 서비스 정책을 먼저 정해야 합니다.

7) 자주 발생하는 문제

정적 파일은 로컬에서 잘 보이는데 CDN을 거치면 다운로드로 떨어지는 경우가 있습니다. 이때는 파일 자체보다 CDN이나 스토리지 메타데이터의 Content-Type이 잘못된 경우가 많습니다. 반대로 API에서 JSON을 내려주면서 text/plain을 보내면 일부 클라이언트나 보안 장비가 예상과 다르게 처리할 수 있습니다.

8) 체크리스트

  • 서버에서 Content-Type을 명시하는가?
  • 업로드 검증에 확장자+시그니처를 사용하는가?
  • CDN/캐시가 MIME을 변경하지 않는가?
  • 다운로드와 인라인 표시 정책이 명확한가?

9) 추가 예시

  • text/csv는 스프레드시트로 다운로드될 때 유용합니다.
  • application/octet-stream은 다운로드 강제에 사용됩니다.
  • text/html을 잘못 내리면 브라우저가 문서로 해석합니다.
Author

운영 및 검수 정보

이 문서는 DevTool Hub에서 작성하고 유지 보수합니다. 실무에서 자주 발생하는 문제를 기준으로 정리하며, 잘못된 설명이나 오래된 내용은 검토 후 수정합니다.

운영 정책은 Editorial Policy에서 확인할 수 있고, 수정 제보는 Contact로 받을 수 있습니다.

관련 도구

다음 읽을 글

Feedback
내용 개선이나 오류 제보는 Contact로 알려주세요.