Что делает инструмент
HTML-сущности — это коды, обозначающие символы, например < для < и é для é. Этот инструмент экранирует текст в сущности, чтобы его можно было безопасно показать на веб-странице, и декодирует сущности обратно в обычный текст — например, когда вы копируете разметку из CMS или шаблона письма.
При кодировании используется полный список HTML5 из более чем 2000 именованных ссылок, а декодирование понимает именованные, десятичные (©) и шестнадцатеричные (©) ссылки точно так же, как браузер.
Как пользоваться
- Вставьте текст или HTML в поле Ввод, загрузите файл или нажмите Пример.
- Выберите Кодировать или Декодировать.
- При кодировании выберите, что кодировать:
- Только & < > ” ’: минимум, необходимый, чтобы поместить текст в HTML или атрибут.
- Плюс не-ASCII, именованные: также превращает символы вроде é, © и — в именованные сущности, а всё, у чего нет имени, — в числовые ссылки.
- Плюс не-ASCII, числовые: то же самое, но всегда числовые (
é), что также допустимо в XML. - Всё, у чего есть имя: кодирует даже знаки препинания вроде
.и/— полезно, если система вырезает эти символы.
- Скопируйте или скачайте результат. Сделать вводом позволяет снова декодировать его и проверить преобразование туда и обратно.
Пример
<p>Café & "crème brûlée"</p>
при кодировании только спецсимволов превращается в
<p>Café & "crème brûlée"</p>
а с именованными сущностями для не-ASCII — в
<p>Café & "crème brûlée"</p>
Типичные сценарии
Показать фрагмент кода в блоге так, чтобы браузер его не отрисовал; вставить пользовательский текст в HTML-письмо; исправить дважды экранированный текст вроде &amp; (декодировать один раз); сделать файл безопасным для системы, которая принимает только ASCII.
Частые вопросы
› Какие символы обязательно экранировать в HTML?
В тексте — & и <. Внутри значений атрибутов нужно также экранировать кавычку, в которую заключено значение. Экранировать & < > " и ' везде — как сделано здесь по умолчанию — всегда безопасно.
› Какие сущности использовать: именованные или числовые?
И те, и другие работают во всех современных браузерах. Именованные сущности вроде é легче читать; числовые ссылки вроде é работают ещё и в XML и в старых парсерах, знающих лишь несколько имён. На странице в UTF-8 не-ASCII символы обычно вообще не нужно кодировать.
› Понимает ли декодирование сущности без точки с запятой?
Да. Оно следует спецификации HTML, поэтому устаревшие формы вроде © без точки с запятой декодируются так же, как в браузере. Неизвестные имена, например &foo;, остаются без изменений.
› Достаточно ли экранирования для защиты от XSS?
Экранирование — правильная защита для текста внутри HTML-элементов и атрибутов в кавычках. Но оно не делает недоверенный ввод безопасным внутри блоков script и style, атрибутов-обработчиков событий или URL — там нужно кодирование с учётом контекста.