HTML Escape / Unescape

Кодирование и декодирование HTML-сущностей онлайн

Ввод
0 characters
Вывод
0 characters
What is HTML Escape & Unescape?

HTML Escape is the process of converting special HTML characters (like <, >, &, ") into HTML entities (like &lt;, &gt;, &amp;, &quot;).

Unescape is the reverse process, converting HTML entities back to their original characters.

Why Do We Need HTML Escaping?

  • Prevent XSS (Cross-Site Scripting): Escaping is the first line of defense against XSS attacks. It prevents malicious HTML/JavaScript injection and is essential when displaying user-generated content.
  • Display HTML Code as Text: Show HTML examples in documentation, render code snippets on web pages, or debug template engines.
  • Data Serialization: Safely embed HTML in JSON/XML, prepare content for API responses, or store HTML in databases.
  • Email & Header Safety: Escape special characters in email subjects, prepare data for HTTP headers, or handle form data correctly.

Entity Format Comparison

CharacterNamed EntityDecimal EntityHex Entity
<&lt;&#60;&#x3C;
>&gt;&#62;&#x3E;
&&amp;&#38;&#x26;
"&quot;&#34;&#x22;
'&apos;&#39;&#x27;

Code Examples

JavaScript (Browser)

// Escape HTML
function escapeHtml(text) {
  const map = {
    '&': '&amp;',
    '<': '&lt;',
    '>': '&gt;',
    '"': '&quot;',
    "'": '&#039;'
  };
  return text.replace(/[&<>"']/g, m => map[m]);
}

// Unescape HTML
function unescapeHtml(html) {
  const doc = new DOMParser().parseFromString(html, 'text/html');
  return doc.documentElement.textContent;
}

// Usage
const escaped = escapeHtml('<script>alert("XSS")</script>');
console.log(escaped); 
// &lt;script&gt;alert(&quot;XSS&quot;)&lt;/script&gt;

Node.js (using 'he' library)

const he = require('he');

// Encode
const encoded = he.encode('<div class="test">Hello & goodbye</div>');
console.log(encoded); 
// &lt;div class=&quot;test&quot;&gt;Hello &amp; goodbye&lt;/div&gt;

// Decode
const decoded = he.decode('&lt;div&gt;Hello&lt;/div&gt;');
console.log(decoded); // <div>Hello</div>

// Different formats
he.encode('<tag>', { useNamedReferences: true });  // &lt;tag&gt;
he.encode('<tag>', { decimal: true });             // &#60;tag&#62;
he.encode('<tag>', { hexadecimal: true });         // &#x3C;tag&#x3E;

Python

import html

# Escape
escaped = html.escape('<script>alert("XSS")</script>')
print(escaped)  
# &lt;script&gt;alert(&quot;XSS&quot;)&lt;/script&gt;

# Unescape
unescaped = html.unescape('&lt;div&gt;Hello&lt;/div&gt;')
print(unescaped)  # <div>Hello</div>

Security Best Practices

⚠️ Important Security Notes:

  • Escaping is NOT Enough: Combine with Content Security Policy (CSP) and backend validation.
  • Context Matters: Use appropriate escaping for HTML content, JavaScript strings, URLs, and SQL.
  • Don't Trust User Input: Always validate and sanitize on both client and server side.
  • Use Framework Built-ins: React, Vue, and Angular escape by default—leverage these features.

Common Use Cases

  • XSS Prevention: Escape user input before displaying:<script>alert('XSS')</script>&lt;script&gt;alert('XSS')&lt;/script&gt;
  • Displaying Code: Show HTML code examples on web pages by escaping tags.
  • JSON with HTML: Prepare HTML fragments for JSON serialization.
  • Email Content: Escape special characters in email subjects and headers.
  • Template Debugging: Unescape rendered template output to see actual HTML.
About This Tool

HTML-экранирование имеет фундаментальное значение для веб-безопасности и отображения данных. Я создал этот инструмент после работы с бесчисленными уязвимостями XSS во время аудитов безопасности и необходимости безопасного отображения пользовательского контента. Будь то очистка входных данных форм, отладка движков шаблонов, подготовка данных для сериализации JSON/XML или обучение концепциям веб-безопасности, правильное кодирование HTML-сущностей необходимо. Инструмент поддерживает три формата сущностей: именованные (&lt;, &gt;), десятичные (&#60;, &#62;) и шестнадцатеричные (&#x3C;, &#x3E;)—каждый полезен в разных контекстах. Вся обработка происходит на стороне клиента в вашем браузере, что делает безопасной обработку конфиденциального содержимого без отправки данных на сервер.

How to Use

Для экранирования: вставьте HTML или текст, содержащий специальные символы, в панель ввода. Инструмент автоматически преобразует символы вроде <, >, &, \", и ' в HTML-сущности в реальном времени. Выберите предпочитаемый формат сущностей: Именованные (наиболее читаемые, например &amp;), Десятичные (широкая совместимость, например &#38;), или Шестнадцатеричные (компактные, например &#x26;). Переключите 'Сохранить переносы строк' для сохранения или удаления переносов. Для снятия экранирования: вставьте HTML с сущностями, и инструмент декодирует их обратно в исходные символы. Опция 'Кодировать все символы' экранирует даже неспециальные символы, полезно для максимальной совместимости в крайних случаях.

Common Use Cases

Предотвращение XSS

Экранируйте пользовательский ввод перед отображением: '<script>alert(XSS)</script>' становится '&lt;script&gt;alert(XSS)&lt;/script&gt;'.

Отладка шаблонов

Снимите экранирование с отрендеренного вывода шаблона, чтобы увидеть фактически сгенерированный HTML.

Экранирование JSON-строк

Подготовьте HTML-фрагменты для JSON-сериализации, экранировав кавычки и специальные символы.

Отображение кода

Покажите примеры HTML-кода на веб-страницах, экранировав теги, чтобы они отображались как текст.

Email HTML

Экранируйте специальные символы в темах или заголовках электронной почты.

Хранение в БД

Экранируйте HTML перед сохранением в текстовые поля, чтобы предотвратить проблемы с отображением.

Limitations & Important Notes

Этот инструмент обрабатывает HTML-сущности, определенные в спецификации HTML5. Он НЕ удаляет и не очищает потенциально опасные HTML-атрибуты (такие как onclick, onerror) или JavaScript-код—он только экранирует символьные представления. Для настоящего предотвращения XSS комбинируйте экранирование с Content Security Policy (CSP) и валидацией ввода. Инструмент предполагает кодировку UTF-8; другие кодировки могут давать неожиданные результаты. Для очень больших документов (>5MB) ограничения памяти браузера могут вызвать замедление. Кодирование сущностей увеличивает размер текста; не идеально для сценариев с ограниченной пропускной способностью.