& < > " '. Расширенный кодирует также все не-ASCII символы. Выберите между элементами с именем (&), десятичными (&) или шестнадцатеричными (&).Как это работает
HTML-сущности представляют символы, имеющие особое значение в разметке (< > & " ') или не входящие в ASCII, с помощью последовательностей вроде <, & или ©. Так браузер показывает их как текст, а не интерпретирует как код.
Существует три эквивалентных формата: именованный (©), десятичный (©) и шестнадцатеричный (©). Все три дают один и тот же символ; именованный читаемее, но существует только для известного набора.
Область «основные» экранирует только символы, ломающие HTML (& < > " '); область «все» дополнительно экранирует любой символ вне ASCII.
Примеры
<a href="#"><a href="#">Экранирование не даёт браузеру интерпретировать теги и показывает их как текст.5 < 10 & 3 > 15 < 10 & 3 > 1© 2024 · €© 2024 · €С областью «все» и именованным форматом. В десятичном это были бы © и €; в шестнадцатеричном — © и €.Сценарии использования
- Показать HTML-код как текст на странице (примеры, документация), не рендеря его.
- Экранировать пользовательский ввод перед вставкой в HTML, чтобы предотвратить XSS.
- Вставлять специальные символы (©, €, →, ½) переносимо между кодировками.
- Декодировать текст с сущностями, скопированный из исходного кода страницы.
Часто задаваемые вопросы
Какой формат лучше: именованный, десятичный или шестнадцатеричный?
Именованный (©) самый читаемый, но охватывает только символы с определённым именем. Десятичный (©) и шестнадцатеричный (©) работают для любого символа Unicode, поэтому это безопасный вариант для редких символов.
Предотвращает ли кодирование сущностей XSS-атаки?
Это важная часть, но экранирование нужно выполнять в зависимости от контекста (HTML-содержимое, атрибут, JavaScript или URL). Не полагайтесь на один слой: используйте также средства защиты фреймворка.
Какие символы всегда нужно экранировать?
& < и > в содержимом, а также " и ' внутри значений атрибутов. Область «основные» покрывает именно этот набор.
Отправляется ли мой текст на сервер?
Нет. Кодирование и декодирование происходят полностью в браузере.