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-атакам
  • Шаблони листів — кодуйте спеціальні символи в HTML-шаблонах електронних листів для коректного відображення
  • Документація — екрануйте приклади коду в HTML-документації, щоб кутові дужки відображалися правильно

Часті запитання

Що таке XSS і як кодування сутностей його запобігає?

Cross-Site Scripting (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-ін'єкціям.

Пов'язані інструменти