XML 설정 (.xml)

W3C 표준

확장성 마크업 언어(XML)는 사람이 읽을 수 있는 형식과 기계가 읽을 수 있는 형식 모두로 문서를 인코딩하기 위한 규칙 집합을 정의하는 다목적 마크업 언어입니다.

XML 온라인 압축

비공개 - 파일은 기기를 벗어나지 않습니다

검사 및 메타데이터

운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 XML 파일을 식별합니다:

여기에 파일을 선택하거나 놓으십시오

비공개 - 파일은 기기를 벗어나지 않습니다

또는 붙여넣기 Ctrl+V
네트워크 전송 없음에 대한 개인정보 보호 보장: 외부 서버로 업로드된 데이터는 0바이트입니다. 모든 처리는 브라우저 샌드박스 내에서 로컬로 수행되었습니다.

바이트 단위 헤더 시그니처 (매직 바이트)

운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 XML 파일을 식별합니다:

16진수 시그니처 (오프셋 0):

3C 3F 78 6D

ASCII 표현: <?xm

표준화: W3C Recommendation (XML 1.0 Fifth Edition)

기술 사양

컨테이너 아키텍처사용자 지정 의미론적 태그와 속성을 사용하는 계층형 텍스트 마크업 언어
압축Gzip / Deflate는 장황한 닫기 태그에서 85%-92%의 압축률을 달성함
바이트 엔디안XML 선언 인코딩 속성에 의해 결정되는 UTF-8 / UTF-16 문자 스트림
색 공간해당 없음
채널 및 구조요소(<tag>), 속성(attr="val"), CDATA 블록, 처리 지침
최대 크기제한 없는 계층형 트리 구조
투명도해당 없음
스트리밍 및 프로그레시브SAX(Simple API for XML) 및 StAX 파서를 사용하면 메모리 효율적인 스트림 읽기가 가능함

기술 비교 매트릭스: XML 대 경쟁사

기술적 속성XML (현재)JSONYAMLProtocol Buffers
장황함높음 (닫기 태그 및 속성 구문)낮음 (간결한 키-값 형식)낮음 (들여쓰기 기반)매우 낮음 (바이너리 직렬화)
스키마 검증컴파일러 강제가 포함된 성숙한 XSD 및 DTD 표준JSON Schema (선택 사항)JSON Schema / Yaml 스키마엄격한 .proto 스키마 정의
네임스페이스네이티브 XML 네임스페이스(xmlns) 지원네이티브 네임스페이스 메커니즘 없음네이티브 네임스페이스 메커니즘 없음패키지 선언
변환XSLT 선언적 변환 파이프라인사용자 지정 코드 / jq 스크립트사용자 지정 코드사용자 지정 코드

일반적인 손상 모드 및 헥스 복구 가이드

XML 파싱 오류: 일치하지 않는 태그 또는 정의되지 않은 엔티티

근본 원인: 이스케이프되지 않은 예약 문('&', '<', '>' 등) 또는 여닫는 태그 간의 대소문자 불일치

복구: “&”를 “&amp;”로, “<”를 “&lt;”로, “>”를 “&gt;”로 바꾸거나 임의의 텍스트를 “<![CDATA[ ... ]]>” 블록으로 감싸십시오.

보안 분석 및 파서 공격 벡터

XML 파서는 강력한 DTD 및 엔티티 확장 기능으로 인해 역사적으로 엔터프라이즈 컴퓨팅에서 가장 공격을 많이 받은 구성 요소 중 하나입니다.

알려진 공격 벡터

  • XXE(XML External Entity): 로컬 서버 파일('file:///etc/passwd') 또는 내부 네트워크 엔드포인트를 참조하는 악성 DOCTYPE
  • Billion Laughs 공격(XML 폭탄): 메모리에서 기하급수적으로 확장하여 서비스 거부를 유발하는 중첩된 엔티티 선언
  • XPath Injection: 권한 없는 XML 데이터베이스 쿼리를 허용하는 살균되지 않은 사용자 입력

방어적 모범 사례: XML 파서에서 항상 외부 DTD 해결 및 외부 엔티티 처리를 비활성화하십시오('disallow-doctype-decl' 기능을 true로 설정).

역사적 배경 및 주요 이력

2008W3C가 현대적인 국제 문자 지원을 표준화한 XML 1.0 5판을 발행합니다.
2000W3C가 구조화된 타이핑 및 이벤트 아키텍처를 확립하는 XML Schema 1.0(XSD)과 DOM Level 2를 발행합니다.
1998W3C가 SGML의 간소화되고 웹 친화적인 하위 집합으로 XML 1.0 권고안을 발행합니다.

주요 장점

  • XSD(XML Schema Definition) 또는 DTD를 사용한 엄격한 스키마 검증으로 강력한 데이터 무결성 보장
  • 네임스페이스(xmlns)를 통해 복잡한 다중 소스 문서에서 요소 이름 충돌 방지
  • 강력한 쿼리 및 변환 툴체인(XPath, XSLT, XQuery) 제공

기술적 제한 사항 및 단점

  • 지나치게 장황함: 닫기 태그가 요소 이름을 반복하여 큰 파일 크기와 높은 대역폭 소비 유발
  • DOM 파싱이 메모리를 많이 소비하는 큰 객체 트리 생성
  • XXE(XML External Entity) 및 엔티티 확장 보안 취약점에 취약함

흥미로운 기술적 상식

  • XML은 월드 와이드 웹상에서 원활하게 작동하도록 설계된 SGML(Standard Generalized Markup Language)의 간소화된 하위 집합입니다.
  • 현대의 오피스 문서(.docx, .xlsx), 벡터 이미지(.svg), RSS 피드 모두 특화된 XML 방언입니다.
  • 고전적인 'Billion Laughs' 서비스 거부 공격은 단 1킬로바이트의 중첩된 XML 엔티티(lol0을 열 번 참조하는 lol1부터 lol9까지)를 사용하여 파싱 시 기하급수적으로 3기가바이트의 메모리로 확장되도록 만듭니다.

자주 묻는 기술 질문

올바른 형식의(well-formed) XML과 유효한(valid) XML은 무엇이 다릅니까?

'올바른 형식의' XML은 기본적인 구문 규칙(태그 일치, 속성 따옴표, 단일 루트 요소)을 따릅니다. '유효한' XML은 잘 형성되어 있을 뿐만 아니라 외부 스키마 정의(XSD 또는 DTD)를 엄격히 준수합니다.

대부분의 웹 API에서 JSON이 XML을 대체한 이유는 무엇입니까?

JSON은 훨씬 적은 보일러플레이트, 더 빠른 파싱, 더 작은 네트워크 페이로드로 기본 자바스크립트 및 프로그래밍 언어 데이터 구조(해시 맵 및 배열)에 직접 매핑됩니다.

XML 외부 엔티티(XXE) 취약성이란 무엇입니까?

XXE 취약성은 XML 파서가 외부 문서 유형 정의(DTD)가 활성화된 신뢰할 수 없는 문서를 처리할 때 발생합니다. 공격자는 로컬 서버 파일(시스템 설정 등)이나 내부 네트워크 URL을 가리키는 엔티티를 정의하여 서버가 기밀 데이터를 읽고 유출하도록 유도할 수 있습니다.