У цій статті
Що таке HTML-сутності?
HTML-сутності — це спеціальні коди, що представляють символи, які або мають особливе значення в HTML, або не можуть бути введені безпосередньо. Наприклад, < — це HTML-сутність для символу < (знак «менше ніж»), який інакше буде інтерпретований як початок HTML-тегу.
Сутності можуть бути іменованими (<, &, ©) або числовими (<, &). Іменовані сутності легше читати; числові сутності підходять для будь-якого символу Unicode навіть без конкретної іменованої сутності.
Як працює кодування HTML-сутностей
Кодувальник сканує текст на символи, що потребують екранування, і замінює їх відповідними сутностями.
- Критичне екранування — < > & " ' завжди екрануються для запобігання впровадженню HTML та XSS
- Розширене екранування — опційне кодування всіх не-ASCII-символів як числових сутностей
- Режим декодування — перетворює HTML, закодований сутностями, назад у звичайний текст для перевірки
Спробуйте безкоштовно — реєстрація не потрібна
Закодувати HTML-сутності →Коли використовувати кодування HTML-сутностей
Кодування HTML-сутностей є критично важливим для безпеки та відображення спеціальних символів на веб-сторінках.
- Відображення контенту користувачів — завжди кодуйте вміст, створений користувачами, перед рендерингом у HTML для запобігання XSS-атакам
- Шаблони листів — кодуйте спеціальні символи в HTML-шаблонах електронних листів для коректного відображення
- Документація — екрануйте приклади коду в HTML-документації, щоб кутові дужки відображалися правильно
Часті запитання
Що таке XSS і як кодування сутностей його запобігає?
Cross-Site Scripting (XSS) — це атака, за якої шкідливі скрипти впроваджуються у веб-сторінки, що переглядаються іншими користувачами. Якщо користувач надсилає <script>alert('xss')</script> і це рендериться як HTML, скрипт виконується. Кодування сутностей перетворює < на <, змушуючи його відображатися як текст і запобігаючи виконанню скрипту.
Коли використовувати & замість & у HTML?
В атрибутах і вмісті HTML символ & має кодуватися як & скрізь, де він не є частиною HTML-сутності. Некодований & у HTML є синтаксичною помилкою. В URL всередині атрибутів href символ & також має кодуватися як &, щоб HTML був валідним (хоча браузери зазвичай пробачають такі помилки).
Чи захищає кодування HTML-сутностей від SQL-ін'єкцій?
Ні. Кодування HTML-сутностей захищає лише від впровадження HTML (XSS). Для захисту від SQL-ін'єкцій використовуйте параметризовані запити або підготовлені вирази на рівні бази даних. Це різні вектори атак, що потребують різних засобів захисту — ніколи не покладайтесь на HTML-кодування для запобігання SQL-ін'єкціям.