DEV

Кодувальник та декодувальник HTML-об'єктів

Що таке HTML-об'єкти?

HTML-об'єкти — це спеціальні коди для символів, що мають особливе значення в HTML або не можуть бути представлені напряму. Наприклад, < кодується як &lt;, > — як &gt;, & — як &amp;, а лапки — як &quot; чи &apos;. Є два типи: іменовані (&nbsp;) та числові (&#160; або &#xA0;).

Важливість для безпеки (XSS)

Некоректне кодування HTML — основна причина XSS (міжсайтовий скриптинг) уразливостей. Якщо дані, введені користувачем, виводяться в HTML без кодування, зловмисник може ввести <script> теги і виконати довільний JavaScript. Завжди кодуйте вивід в HTML-контексті: це правило номер один веб-безпеки.

Кодування в різних контекстах

HTML-контекст (вміст тегів): кодуйте < > & ". Атрибути HTML: кодуйте також одинарні лапки. JavaScript-рядки: потрібне JavaScript-escaping, а не HTML-кодування. URL у атрибутах href/src: URL-кодування. Використання неправильного кодування для контексту не захищає від XSS.

Спецсимволи в контенті

Для відображення авторського права: &copy; → ©. Зареєстрована торгова марка: &reg; → ®. Нерозривний пробіл: &nbsp;. Тире: &mdash; → — та &ndash; → –. Типографічні лапки: &ldquo; і &rdquo; → “ та ”.