출력 HTML Entity
0 chars
HTML Entity 변환 흐름
HTML에서 특수문자를 안전하게 표시하기 위해 Entity로 변환합니다
HTML Entity 인코더/디코더는 HTML 특수문자를 엔티티로 변환하거나 원래대로 복원하는 도구입니다.
🔒 HTML 엔티티 인코딩 (Encode)
• 인코딩 모드를 선택하세요
• 입력창에 변환할 HTML 코드나 텍스트를 입력하세요
• "변환" 버튼을 클릭하면 HTML 엔티티로 인코딩됩니다
• 예: "<div>" → "<div>"
• "Numeric Entities" 옵션으로 숫자 엔티티로 변환 가능
• "복사" 버튼으로 결과를 클립보드에 복사할 수 있습니다
🔓 HTML 엔티티 디코딩 (Decode)
• 디코딩 모드를 선택하세요
• 입력창에 HTML 엔티티를 입력하세요
• "변환" 버튼을 클릭하면 원본 텍스트로 복원됩니다
• 예: "<div>" → "<div>"
• Named entities와 numeric entities 모두 지원
📚 빠른 참조표
• "REFERENCE" 버튼을 클릭하면 일반적인 HTML 엔티티 목록을 볼 수 있습니다
• 각 엔티티를 클릭하면 입력창에 자동으로 추가됩니다
• 자주 사용하는 엔티티를 빠르게 찾을 수 있습니다
🔄 입출력 교환
• "입출력 교환" 버튼으로 입력과 출력을 빠르게 전환할 수 있습니다
• 인코딩과 디코딩을 연속적으로 수행할 때 유용합니다
📊 통계 정보
• 변환 후 입력/출력 길이와 크기 변화율을 확인할 수 있습니다
HTML Entity는 HTML에서 특수문자를 표현하기 위한 문자 참조입니다. HTML 코드와 충돌할 수 있는 문자들을 안전하게 표시할 수 있습니다.
📖 HTML Entity의 역사
HTML Entity는 HTML 표준의 초기부터 존재했습니다. HTML에서 '<', '>', '&' 같은 문자들은 태그를 정의하는 데 사용되므로, 이러한 문자들을 텍스트로 표시하려면 특별한 방법이 필요했습니다. 이를 위해 문자 참조(Character Reference) 시스템이 도입되었습니다.
HTML Entity는 두 가지 형식이 있습니다:
1. Named Entity: <, >, & 등 사람이 읽기 쉬운 이름
2. Numeric Entity: <, >, & 등 유니코드 번호
🔧 동작 원리
HTML 파서가 문서를 읽을 때 '&'로 시작하고 ';'로 끝나는 문자열을 발견하면, 이를 해당하는 문자로 변환합니다. 예를 들어:
• < → < (Less than)
• > → > (Greater than)
• & → & (Ampersand)
• < → < (Unicode 60번 문자)
💡 주요 사용 사례
• HTML 코드를 텍스트로 표시할 때
• 사용자 입력 데이터를 안전하게 출력 (XSS 방지)
• 특수문자가 포함된 콘텐츠 작성
• XML/HTML 문서에서 예약된 문자 사용
• 이메일 템플릿 작성
• 블로그나 기술 문서 작성
🛡️ 보안 측면 (XSS 방지)
HTML Entity 인코딩은 XSS(Cross-Site Scripting) 공격을 방지하는 중요한 보안 기법입니다. 사용자 입력을 그대로 HTML에 출력하면 악성 스크립트가 실행될 수 있지만, 엔티티로 인코딩하면 스크립트가 텍스트로만 표시됩니다.
위험한 예:
<div>{userInput}</div> // userInput이 "<script>alert('XSS')</script>"인 경우 위험
안전한 예:
<div>{encodeHtmlEntities(userInput)}</div> // "<script>..." 로 표시됨
🎨 일반적인 HTML Entities
필수 엔티티:
• < (<) - Less than
• > (>) - Greater than
• & (&) - Ampersand
• " (") - Quote
• ' (') - Apostrophe
자주 사용되는 엔티티:
• - Non-breaking space
• © (©) - Copyright
• ® (®) - Registered trademark
• ™ (™) - Trademark
• € (€) - Euro symbol
⚠️ 주의사항
• 모든 HTML Entity는 '&'로 시작하고 ';'로 끝나야 합니다
• Named entity는 대소문자를 구분합니다 (©는 작동하지 않음)
• Numeric entity는 10진수(<) 또는 16진수(<) 형식 사용 가능
• 지나친 인코딩은 코드 가독성을 떨어뜨릴 수 있습니다
💡 HTML Entity 활용 가이드
1. XSS 공격 방지
웹 애플리케이션에서 사용자 입력을 표시할 때는 반드시 HTML Entity로 인코딩하세요. 이를 통해 악성 스크립트 삽입을 방지할 수 있습니다.
2. 코드 예제 표시
블로그나 문서에서 HTML/XML 코드를 보여줄 때 엔티티 인코딩을 사용하면 코드가 실행되지 않고 텍스트로 표시됩니다.
3. 특수문자가 포함된 콘텐츠
저작권 기호(©), 상표 기호(™), 통화 기호(€) 등을 안전하게 표시할 수 있습니다.
4. 이메일 HTML 템플릿
이메일 클라이언트는 HTML 렌더링이 다양하므로, 호환성을 위해 엔티티를 사용하는 것이 안전합니다.
5. XML/JSON 데이터
XML 또는 JSON 문자열에 HTML 코드를 포함할 때 엔티티로 인코딩하면 파싱 오류를 방지할 수 있습니다.
6. SEO 최적화
메타 태그나 제목에 특수문자를 사용할 때 엔티티를 활용하면 검색엔진이 올바르게 인식합니다.
7. 프레임워크별 주의사항
• React/Vue: 기본적으로 XSS 방지가 되어 있지만, dangerouslySetInnerHTML 사용 시 주의
• Angular: 자동 sanitization 제공
• 서버 사이드: 모든 사용자 입력은 출력 전 인코딩 필수
8. Named vs Numeric Entities
• Named: 가독성이 좋고 의미가 명확 (©, )
• Numeric: 모든 유니코드 문자 표현 가능 (♥ = ♥)
9. Non-breaking Space ( )
줄바꿈을 방지하고 싶은 단어 사이에 를 사용하세요. 날짜, 단위, 고유명사 등에 유용합니다.
10. 성능 고려사항
• 대량의 텍스트를 인코딩할 때는 서버 사이드에서 처리
• 클라이언트 사이드 인코딩은 DOM 조작을 최소화
• 정규식보다는 브라우저 내장 함수 활용 (DOMParser, createElement)