먼저 알아둘 기준

HWP 5.x 문서는 OLE 복합 파일 안의 FileHeader, BodyText와 여러 스트림에 정보를 저장합니다. 레코드와 압축 방식을 해석해야 하므로 단순 텍스트 파일처럼 읽을 수 없습니다.

HWPX는 여러 XML 문서와 이미지 자원을 ZIP 컨테이너에 넣습니다. 구조를 살펴보기 쉽지만 XML 네임스페이스와 버전별 요소를 올바르게 처리해야 하며 외부 엔티티와 경로 순회 같은 보안 검증도 필요합니다.

두 형식은 같은 문서 기능을 표현하더라도 내부 모델이 다릅니다. HWP를 HWPX 파서에 넣거나 반대로 처리하면 빈 결과나 오류가 생길 수 있어 실제 형식 탐지가 첫 단계입니다.

실제 작업에서 보는 사례

01

HWP 5.x 파일은 OLE 시그니처와 FileHeader 스트림을 확인합니다.

02

HWPX 파일은 ZIP 시그니처 뒤 content.hpf와 section XML 같은 내부 구조를 검사합니다.

03

이름만 report.hwp인 일반 ZIP은 예상 내부 구조가 없어 가짜 또는 불일치 파일로 거부합니다.

단계별로 확인하는 방법

  1. 1

    파일 확장자와 MIME 정보는 초기 힌트로만 사용합니다.

  2. 2

    첫 바이트 시그니처와 컨테이너 구조를 안전하게 검사합니다.

  3. 3

    HWP 5.x 또는 HWPX 전용 파서를 동적으로 불러옵니다.

  4. 4

    버전·섹션과 지원하지 않는 요소를 표시한 뒤 기능을 실행합니다.

HWP와 HWPX 내부 형식 비교

항목HWP 5.xHWPX
컨테이너OLE 복합 바이너리ZIP 패키지
본문 표현바이너리 레코드·스트림XML 요소
형식 탐지OLE와 FileHeader 확인ZIP과 필수 내부 항목 확인
주요 위험압축·손상 레코드ZIP 경로 순회·XXE·압축 폭탄

주의할 점

  • 확장자를 바꾸는 것은 실제 문서 형식 변환이 아닙니다.
  • 압축 컨테이너를 열 때 해제 크기 제한과 내부 경로 정규화를 적용해야 합니다.

기술적 제한

  • 두 사양의 모든 버전과 확장 요소를 단일 브라우저 파서가 완전히 지원하지 못할 수 있습니다.
  • 실제 형식이 맞더라도 암호화, DRM과 배포용 보호 상태는 별도의 지원 제한을 만듭니다.