Skip to main content
CheckTown
Конвертеры

Кодирование HTML-сущностей: защита от XSS и отображение специальных символов

Опубликовано 5 мин чтения
В этой статье

Что такое HTML-сущности?

HTML-сущности — это специальные коды, представляющие символы, которые имеют особое значение в HTML или не могут быть введены напрямую. Например, &lt; — это HTML-сущность для символа < (знак меньше), который иначе был бы воспринят как начало HTML-тега.

Сущности могут быть именованными (&lt;, &amp;, &copy;) или числовыми (&#60;, &#38;). Именованные сущности более читаемы; числовые работают для любого Unicode-символа даже без соответствующей именованной сущности.

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

Кодировщик сканирует текст в поисках символов, требующих экранирования, и заменяет их соответствующими сущностями.

  • Обязательное экранирование — < > & " ' всегда экранируются для предотвращения HTML-инъекций и XSS
  • Расширенное экранирование — опциональное кодирование всех не-ASCII-символов как числовых сущностей
  • Режим декодирования — преобразует HTML с закодированными сущностями обратно в обычный текст для проверки

Попробуйте бесплатно — без регистрации

Закодировать HTML-сущности →

Когда применять кодирование HTML-сущностей

Кодирование HTML-сущностей критически важно для безопасности и корректного отображения специальных символов на веб-страницах.

  • Отображение пользовательского контента — всегда кодируйте пользовательский контент перед рендерингом в HTML для предотвращения XSS-атак
  • Шаблоны email — кодируйте специальные символы в HTML-шаблонах писем для корректного отображения
  • Документация — экранируйте примеры кода в HTML-документации, чтобы угловые скобки отображались правильно

Часто задаваемые вопросы

Что такое XSS и как кодирование сущностей защищает от него?

Межсайтовый скриптинг (XSS) — это атака, при которой вредоносные скрипты внедряются на веб-страницы, просматриваемые другими пользователями. Если пользователь вводит <script>alert('xss')</script> и это отображается как HTML, скрипт выполняется. Кодирование сущностей преобразует < в &lt;, что заставляет браузер отображать его как текст, предотвращая выполнение скрипта.

Когда использовать &amp; вместо & в HTML?

В HTML-атрибутах и содержимом символ & должен быть закодирован как &amp; везде, где он не является частью HTML-сущности. Незакодированный & в HTML является ошибкой разбора. В URL внутри атрибутов href символ & также должен быть закодирован как &amp; для корректного HTML (хотя браузеры обычно прощают эту ошибку).

Защищает ли кодирование HTML-сущностей от SQL-инъекций?

Нет. Кодирование HTML-сущностей защищает только от HTML-инъекций (XSS). Для защиты от SQL-инъекций используйте параметризованные запросы или подготовленные выражения на уровне работы с базой данных. Это разные векторы атак, требующие разных методов защиты — никогда не полагайтесь на HTML-кодирование для предотвращения SQL-инъекций.

Похожие инструменты