HTML-сущности
Экранируйте символы разметки, чтобы они отображались как текст, или декодируйте их обратно.
- Работает в вашем браузере — текст никуда не отправляется
- Без регистрации и квот, пользуйтесь бесплатно сколько угодно
Как это работает
Вставка недоверенного текста на веб-страницу без экранирования — так и возникает межсайтовый скриптинг. Кодирование превращает символы, которые браузер считает разметкой, в сущности, и они отображаются, а не выполняются.
Что кодируется
Пять важных символов: амперсанд, «меньше», «больше», двойная кавычка и апостроф. Амперсанд нужно кодировать первым, иначе всё, что идёт после него, будет закодировано дважды.
Декодирование
При декодировании именованные и числовые сущности превращаются обратно в символы с помощью парсера браузера, а не таблицы подстановки, поэтому полный набор обрабатывается правильно.
Что именно кодируется
Кодирование заменяет пять символов: & превращается в &, < — в <, > — в >, " — в ", а ' — в '. Этого достаточно, чтобы безопасно показывать текст внутри HTML и внутри атрибутов в кавычках. Буквы с диакритикой и эмодзи остаются как есть, потому что страницы в UTF-8 отображают их напрямую.
Декодирование
Декодирование понимает все именованные сущности, определённые в HTML, например é, — и , а также числовые сущности в десятичном и шестнадцатеричном виде (é, é), потому что использует собственный HTML-парсер вашего браузера.
HTML-сущности: вопросы и ответы
Защитит ли это мой сайт от XSS?
Экранирование вывода — необходимая часть защиты, но безопасность зависит от экранирования в правильном контексте. Если у вас есть фреймворк, пользуйтесь его экранированием.
Какие символы кодируются?
Амперсанд, «меньше», «больше», двойная кавычка и апостроф — те, которые браузер иначе принял бы за разметку.
Мой текст загружается на сервер?
Нет. Кодирование выполняется на странице.