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

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