HTML 엔티티
HTML 특수 문자 및 엔티티 인코딩 및 디코딩
사용 사례
- 사용자 콘텐츠를 안전한 HTML로 이스케이프 — 템플릿에 삽입하기 전에 `<script>`를 `<script>`로 변환합니다.
- 원시 HTML 이메일 소스 읽기 — 수신자가 실제로 보는 내용을 확인하기 위해 `&` 및 `☃`를 디코드합니다.
- CMS 안전 스니펫 구축 — 데이터베이스 열이 SQL 또는 HTML 컨텍스트를 깨지 않도록 `'` 및 `"`를 인코딩합니다.
- XSS 보고서 디버깅 — 의심스러운 입력을 이스케이프 해제하여 원래 페이로드를 복구합니다.
HTML 엔티티 인코딩이 필요한 경우는?
사용자가 제공한 텍스트가 HTML로 렌더링될 때, `<` 및 `>`와 같은 문자는 태그로 해석되지 않도록 `<` 및 `>`로 이스케이프해야 합니다. 이를 건너뛰면 XSS 취약점의 근본 원인이 됩니다. 이 도구는 다섯 가지 핵심 HTML-안전하지 않은 문자를 인코딩하고, 이스케이프할 유니코드를 선택할 수 있습니다.
숫자 엔티티(`&`, `&`)는 모든 HTML 컨텍스트에서 작동합니다. 명명된 엔티티(`&`, `©`)는 읽기 쉽지만 HTML에서만 작동하며, XML 파서는 모든 HTML 이름을 알지 못합니다.
예시
| 입력 | 결과 |
|---|---|
| <script>alert('hi')</script> | <script>alert('hi')</script> |
| © 2024 — Wenee | © 2024 — Wenee |
자주 묻는 질문
어떤 문자를 인코딩해야 하나요?
최소한: `<`, `>`, `&`, `"`, 및 `'`. 더 많은 문자를 인코딩하는 것은 해롭지 않지만 출력이 부풀어 오릅니다.
명명된 엔티티와 숫자 엔티티 중 어떤 것이 더 좋나요?
명명된(`&`)은 HTML에서 더 읽기 쉽고, 숫자(`&`)는 HTML과 XML 모두에서 작동합니다. 형식 간 안전성을 위해 숫자를 선택하세요.
HTML 엔티티 인코딩은 URL 인코딩과 동일한가요?
아니요 — HTML 엔티티는 HTML 컨텍스트를 위한 `&...;` 구문을 사용합니다. URL 인코딩은 URL 컨텍스트를 위해 `%XX`를 사용합니다. 이들은 서로 다른 레이어를 제공합니다.
이것이 XSS를 방지하나요?
HTML 출력에서 텍스트 콘텐츠를 인코딩하면 가장 일반적인 XSS 벡터를 방지합니다. 다른 컨텍스트(속성 값, JavaScript 문자열, CSS)에는 고유한 이스케이프 규칙이 필요합니다.
내 텍스트가 어디로 전송되나요?
아니요. 인코딩 및 디코딩은 전적으로 귀하의 브라우저에서 발생합니다.
