Какие символы необходимо экранировать в HTML?
Они такие же, как XML, возможно, плюс пробел ( )? Я нашел несколько огромных списков экранирующих символов HTML, но я не думаю, что их нужно экранировать. Я хочу знать, что нужно избежать.
4 ответа
Если вы вставляете текстовое содержимое в документ в месте, где ожидается текстовое содержимое 1 вам обычно нужно экранировать только те же символы, что и в XML. Внутри элемента это просто включает в себя экранирующую сущность & & и разделитель элементов со знаками «меньше и больше» < >:
В некоторых случаях может быть безопасно пропустить экранирование некоторых из этих персонажей, но я призываю вас избегать всех пяти во всех случаях, чтобы уменьшить вероятность ошибки. Если кодировка вашего документа не поддерживает все символы, которые вы используете, например, если вы пытаетесь использовать эмодзи в документе в кодировке ASCII, вам также необходимо их избежать. Большинство документов в наши дни кодируются с использованием полностью поддерживающей Unicode кодировки UTF-8, где в этом нет необходимости. В общем, вы не должны избегать пробелов, так как , это не нормальное пространство, это неразрывное пространство. Вы можете использовать их вместо обычных пробелов для предотвращения вставки разрыва строки между двумя словами или для вставки дополнительного пробела без автоматического свертывания, но обычно это редкий случай. Не делайте этого, если у вас нет конструктивных ограничений, которые этого требуют. 1 Под «местом, где ожидается текстовое содержимое», я подразумеваю значение элемента или атрибута в кавычках, где применяются обычные правила синтаксического анализа. Например:
HERE
или
.
. То, что я написал выше , не относится к содержимому, которое имеет специальные правила или значение синтаксического анализа, например, внутри скрипта или тега стиля, или как имя элемента или атрибута. Например:
.
. В этих условиях правила являются более сложными, и гораздо проще внедрить уязвимости в системе безопасности. Я настоятельно рекомендую вам никогда не вставлять динамический контент в любое из этих мест. Я видел, как команды компетентных разработчиков, осведомленных о безопасности, внедряли уязвимости, предполагая, что они правильно закодировали эти значения, но пропустили крайний случай. Обычно существует более безопасная альтернатива, например, добавление динамического значения в атрибут и последующая обработка его с помощью JavaScript. Если необходимо, ознакомьтесь с Правилами предотвращения XSS проекта Open Web Application Security, чтобы понять некоторые проблемы, которые необходимо учитывать.
Онлайн экранирование кода для вставки в HTML
Удобный функциональный онлайн генератор для экранирования кода работает на лету без перезагрузки страницы. Просто вставьте ваш код и нажмите кнопку Копировать.
Данный инструмент позволяет на лету без перезагрузки страницы экранировать код для дальнейшей вставки его в HTML, заменяя в коде символы < >& » ` на соответствующие им коды Unicode.
Такое экранирование нужно для того, чтобы без проблем встраивать демонстрационные фрагменты кода в HTML-документы и страницы сайта.
Вставьте код:
Результат:
Ниже приведены символы и Unicode значения для них, которые заменяет данный генератор:
Описание настроек
Данное экранирование не зависит от языка программирования и нужно исключительно для вставки кода в HTML, потому что если не заменить упомянутые выше символы на unicode, браузер будет воспринимать их как часть HTML и проинпретирует (обработает) код как часть html.
Обернуть код тегами pre code
Данная настройка обернёт полученный результат тегами .
Добавить класс языка в тег code
Эта настройка добавит в тег code класс с идентификатором языка. Пример class=»language-html» . Это нужно если блок pre обрабатывается скриптами осуществляющими подсветку синтаксиса кода.
Работает только если включена настройка «Добавить класс языка в тег code».
Языки
Выбор языка — эта настройка укажет в class=»language-. » выбранный язык.
Работает только если включена настройка «Обернуть код тегами pre code».