HTML 엔티티 인코더 / 디코더

HTML 특수문자 인코딩 및 디코딩

Common HTML Entities

& = &
< = &lt;
> = &gt;
" = &quot;
' = &#39;
/ = &#47;
` = &#96;
= = &#61;
최종 수정:

도구 소개

HTML 엔티티 인코더는 HTML에서 특별한 의미를 가지는 문자(<, >, &, " 등)를 안전한 엔티티 표현(&lt;, &gt;, &amp;, &quot; 등)으로 변환합니다. 사용자 입력을 페이지에 렌더링할 때 반드시 엔티티 인코딩을 거쳐야 브라우저가 마크업이 아닌 텍스트로 해석하므로, XSS 방어의 기본입니다.

사용 방법

  1. Encode(인코딩)나 Decode(디코딩) 모드를 선택합니다.
  2. 텍스트나 HTML 스니펫을 입력란에 붙여넣습니다.
  3. 오른쪽에서 변환 결과를 확인합니다.
  4. Copy 버튼으로 결과를 복사해 템플릿, 이메일, 문서에 사용합니다.
  5. 하단 엔티티 표를 자주 쓰는 문자의 참고 자료로 활용합니다.

주요 사용 사례

  • 서버 렌더링 페이지에 사용자 입력을 주입하기 전 살균(sanitisation) 처리
  • Markdown/HTML 문서에 <, > 가 포함된 코드 스니펫 삽입
  • 어퍼스트로피와 앰퍼샌드가 메일 클라이언트마다 정상 렌더링되도록 이메일 HTML 준비
  • &amp;quot; 처럼 이중 인코딩된 스크래핑 결과 정상화
  • XSS 결함 보고 전에 출력이 올바르게 이스케이프됐는지 검증
  • 튜토리얼에서 HTML 마크업을 그대로 노출하기

자주 묻는 질문

Q. 템플릿 엔진을 쓰는데도 인코딩이 필요할까요?

A. 대부분의 최신 엔진(Svelte, React, Jinja, ERB)은 기본 자동 이스케이프를 합니다. 다만 "raw"나 "unsafe" 헬퍼를 쓰는 순간 인코딩 책임은 개발자에게 넘어옵니다.

Q. &amp;#39;와 &amp;apos;의 차이는?

A. 둘 다 어퍼스트로피를 인코딩합니다. &apos;는 XHTML/XML 전용이며 일부 레거시 HTML 파서가 인식하지 못하므로 HTML 출력에는 &#39;이 더 안전합니다.

Q. 인코딩만 하면 XSS가 다 해결되나요?

A. 아닙니다. 컨텍스트가 중요합니다 — JS 문자열, URL 속성, CSS 각각 별도의 이스케이프 규칙이 있습니다. 마크업이 살아 있는 HTML을 렌더링해야 한다면 검증된 sanitizer를 쓰세요.

Q. 엔티티가 없는 문자열을 디코딩하면 왜 그대로인가요?

A. 디코딩할 대상이 없기 때문입니다. 디코더는 인식된 엔티티만 원래 문자로 바꾸고 일반 텍스트는 그대로 통과시킵니다.