and it is rendered as HTML, the script executes. Entity encoding converts < to < making it render as text, preventing script execution." } }, { "@type": "Question", "name": "When should I use & versus & in HTML?", "acceptedAnswer": { "@type": "Answer", "text": "In HTML attributes and content, & must be encoded as & whenever it is not part of an HTML entity. Unencoded & in HTML is a parsing error. In URLs within href attributes, & must also be encoded as & to be valid HTML (though browsers are forgiving)." } }, { "@type": "Question", "name": "Does HTML entity encoding protect against SQL injection?", "acceptedAnswer": { "@type": "Answer", "text": "No. HTML entity encoding only protects against HTML injection (XSS). For SQL injection prevention, use parameterized queries or prepared statements in your database layer. These are separate attack vectors requiring different defenses — never rely on HTML encoding to prevent SQL injection." } } ] }
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-инъекций.

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