MHTML 파일

웹브라우저를 사용하다 보면 특정 웹페이지의 상태를 보존하고자 저장하는 경우가 있다. 이때 자주 등장하는 포맷 중 하나가 MHTML(MIME HTML)이다. .mhtml 또는 .mht 확장자를 갖는 이 파일은 웹페이지의 구조와 콘텐츠를 하나의 파일로 통합 저장하는 기능을 수행하며, 특히 Chrome, Edge 같은 Chromium 기반 브라우저에서 널리 활용된다.

MHTML 포맷의 구조

MHTML은 사실상 이메일 포맷과 유사한 multipart/related MIME 형식을 따른다. 이 구조는 HTML 본문과 함께 그 안에 포함된 이미지, CSS, 자바스크립트 등의 리소스를 각각의 Part로 나눠 base64 또는 quoted-printable로 인코딩하여 하나의 문서 안에 집어넣는 방식이다. 즉, 웹페이지 전체를 오프라인에서도 렌더링할 수 있도록 만들어주는 구조적 저장 포맷이다.

  • 텍스트 영역: HTML 콘텐츠, <html>, <head>, <body> 태그 등이 포함된다.
  • 스타일 영역: CSS 파일이 Content-Type: text/css로 저장되어 외부 스타일을 대체한다.
  • 이미지/아이콘: Content-Type: image/png 등으로 지정된 base64 인코딩 이미지가 삽입된다.
  • 헤더 정보: Snapshot-Content-Location, Subject, Date, Content-ID 등의 메타데이터가 첨부되어 콘텐츠의 출처와 시간 정보를 보존한다.

실무에서 마주치는 MHTML: 터미널, 원격 환경의 캡처 저장

최근에는 웹 기반 원격 접속 환경(예: Jupyter Notebook, Web-based SSH, tmux + bash 조합의 클라우드 터미널 등)을 사용하는 빈도가 증가함에 따라, 사용자는 해당 화면을 저장하거나 캡처할 때 MHTML 형태로 저장되는 현상을 종종 경험하게 된다.

예를 들어, 어떤 AI 학습 플랫폼에서 https://proxy5.aitrain.ktcloud.com:10372/ 와 같은 주소를 통해 접속한 웹 터미널에서, tmux를 통해 bash 세션을 실행하는 중 캡처를 저장하면 MHTML 포맷에 해당 화면이 기록된다. 이 경우 From: <Saved by Blink>이라는 문구와 함께, Chrome의 Blink 엔진이 해당 문서를 저장했다는 흔적이 남는다.

왜 MHTML인가?

  • 하나의 파일로 보존 가능: HTML + CSS + 이미지 + JS를 각각 따로 저장할 필요가 없다.
  • 네트워크 없이도 렌더링 가능: 오프라인 상태에서도 브라우저에서 열어보는 것이 가능하다.
  • 보안 및 포렌식 측면: 원본 웹페이지의 구조와 시점을 그대로 보존하기 때문에, 디지털 포렌식 또는 로그 증거로 활용되기도 한다.

주의할 점

  1. 보안 민감도: URL, 세션 정보, 내부 명령어(/bin/bash, tmux, 환경변수 등`)가 포함된 상태로 저장되기 때문에, 타인과 공유할 경우 민감한 정보 노출 위험이 있다.
  2. 브라우저 의존성: MHTML은 일부 브라우저(특히 Firefox 등)에서는 기본적으로 열리지 않는다. Chrome이나 Edge 환경에서 정상 렌더링이 가능하다.
  3. 디코딩 어려움: 기본 텍스트 뷰어나 메모장에서 열 경우 base64나 quoted-printable 형식으로 인코딩된 데이터가 그대로 보이며, HTML 구조도 무너져 해석이 어렵다.

실용 예시

  • 기술 교육 플랫폼에서 실습 결과를 그대로 저장해 과제 제출 자료로 활용
  • 리눅스 서버의 상태 확인용 터미널 스냅샷을 포렌식 증거로 확보
  • 웹디자인 및 마크업 리뷰 시, 특정 시점의 디자인 상태를 통째로 저장해 공유

결론

MHTML은 단순히 웹페이지를 저장하는 기술을 넘어, 정보의 구조적 보존과 문맥을 함께 담는 포맷이다. 특히 웹 기반 터미널, 원격 접속 시스템, 기술문서 캡처 등에서는 단순 이미지 캡처보다 더 정교한 저장 수단으로 기능한다. 이 형식을 이해하면, 언제 어떤 상황에서 MHTML을 활용할 것인지, 그리고 해당 파일이 담고 있는 구조적 정보의 중요성을 파악하는 데 큰 도움이 된다.

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다