HTML 엔티티

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

사용 사례

  • 사용자 콘텐츠를 안전한 HTML로 이스케이프 — 템플릿에 삽입하기 전에 `<script>`를 `&lt;script&gt;`로 변환합니다.
  • 원시 HTML 이메일 소스 읽기 — 수신자가 실제로 보는 내용을 확인하기 위해 `&amp;` 및 `&#x2603;`를 디코드합니다.
  • CMS 안전 스니펫 구축 — 데이터베이스 열이 SQL 또는 HTML 컨텍스트를 깨지 않도록 `'` 및 `"`를 인코딩합니다.
  • XSS 보고서 디버깅 — 의심스러운 입력을 이스케이프 해제하여 원래 페이로드를 복구합니다.

HTML 엔티티 인코딩이 필요한 경우는?

사용자가 제공한 텍스트가 HTML로 렌더링될 때, `<` 및 `>`와 같은 문자는 태그로 해석되지 않도록 `&lt;` 및 `&gt;`로 이스케이프해야 합니다. 이를 건너뛰면 XSS 취약점의 근본 원인이 됩니다. 이 도구는 다섯 가지 핵심 HTML-안전하지 않은 문자를 인코딩하고, 이스케이프할 유니코드를 선택할 수 있습니다.

숫자 엔티티(`&#38;`, `&#x26;`)는 모든 HTML 컨텍스트에서 작동합니다. 명명된 엔티티(`&amp;`, `&copy;`)는 읽기 쉽지만 HTML에서만 작동하며, XML 파서는 모든 HTML 이름을 알지 못합니다.

예시

입력결과
<script>alert('hi')</script>&lt;script&gt;alert(&#39;hi&#39;)&lt;/script&gt;
© 2024 — Wenee&copy; 2024 &mdash; Wenee

자주 묻는 질문

어떤 문자를 인코딩해야 하나요?

최소한: `<`, `>`, `&`, `"`, 및 `'`. 더 많은 문자를 인코딩하는 것은 해롭지 않지만 출력이 부풀어 오릅니다.

명명된 엔티티와 숫자 엔티티 중 어떤 것이 더 좋나요?

명명된(`&amp;`)은 HTML에서 더 읽기 쉽고, 숫자(`&#38;`)는 HTML과 XML 모두에서 작동합니다. 형식 간 안전성을 위해 숫자를 선택하세요.

HTML 엔티티 인코딩은 URL 인코딩과 동일한가요?

아니요 — HTML 엔티티는 HTML 컨텍스트를 위한 `&...;` 구문을 사용합니다. URL 인코딩은 URL 컨텍스트를 위해 `%XX`를 사용합니다. 이들은 서로 다른 레이어를 제공합니다.

이것이 XSS를 방지하나요?

HTML 출력에서 텍스트 콘텐츠를 인코딩하면 가장 일반적인 XSS 벡터를 방지합니다. 다른 컨텍스트(속성 값, JavaScript 문자열, CSS)에는 고유한 이스케이프 규칙이 필요합니다.

내 텍스트가 어디로 전송되나요?

아니요. 인코딩 및 디코딩은 전적으로 귀하의 브라우저에서 발생합니다.