Русский

Инструменты разработчика · Экранирующий элемент HTML

Сбежать, раздеться или продезинфицировать HTML: три метода и когда использовать каждый

· Как это работает

HTML безопасность обработка текста

Убежать, удалить или очистить HTML: три метода и когда использовать каждый из них показаны в виде диаграммы ссылок на символы, безопасной для браузера.
Оригинальная векторная иллюстрация ToolAcre

Экранирование отображает разметку в виде текста, удаление удаляет ее, а очистка сохраняет безопасное подмножество. В этом посте объясняется, что на самом деле делает каждый метод, где каждый из них терпит неудачу и как выбрать правильный для вашего вклада.

Комментарий, который должен был показывать код, а вместо этого запускал его — неправильный выбор из трёх техник

Комментарий, который должен был показывать код, а вместо этого запускал его — неправильный выбор среди трёх техник. Комментарий, предназначенный для отображения разметки, может выполняться, когда приложение отображает его как HTML. Первое решение заключается в том, нужен ли продукту простой текст, без разметки или намеренно ограниченное расширенное подмножество.

Чтобы проверить escape или санировать html, создайте комментарий, предназначенный для разработчика, создающего систему комментариев. Preserve должен был показывать код, пока он производит выбор из трех операций, и вместо этого запускает его; определить, где был сделан неправильный выбор среди потребляемых. Замечание о трёх техниках относится только к тексту HTML.

Экранирование: разметка становится видимым текстом — что меняется, что сохраняется и почему это значение по умолчанию

Экранирование: разметка становится видимым текстом — что меняется, что сохраняется и почему это значение по умолчанию. Экранирование сохраняет каждый символ, заменяя критически важные для разметки ссылки на ссылки. Браузер отображает исходные символы в виде текста, что делает его правильным по умолчанию для комментариев и примеров кода.

Разработчик, создающий систему комментариев, может проверить, как экранирующая разметка становится видимой, записывая текст, что что меняет, до прохождения трех операций выбора. Сравнение сохраняется, а затем и поиск ответственного за него синтаксического анализатора используется по умолчанию. Этот результат escape vs sanitize html объясняет доказательства выбора из трех операций, а не исполняемые контексты.

Удаление тегов: удаление тегов — почему удаление тегов с помощью регулярных выражений ненадежно и что оно теряет

Удаление тегов: удаление тегов — почему удаление тегов с помощью регулярных выражений ненадежно и что при этом теряется. При удалении удаляются очевидные теги и теряется структура, пунктуация или слова. Регулярные выражения не могут достаточно надежно моделировать восстановление ошибок браузера, элементы необработанного текста или неверную вложенность, чтобы определить безопасность.

Изолируйте удаление тегов, почему, в коротком примере выбора из трех операций. Покажите удаление тега регулярного выражения как буквальный источник, проследите за ненадежным и его до места назначения, а чтение имени API потеряет. Для экранирования и очистки html доказательства выбора из трех операций остаются доказательствами, привязанными к анализатору.

Очистка: разрешение подмножества — списки разрешенных, правила атрибутов и почему это самое сложное из трех

Очистка: разрешение подмножества — списки разрешенных, правила атрибутов и почему это самое сложное из трех. Очистка анализирует или токенизирует разметку и сохраняет явный список разрешенных элементов, атрибутов и схем URL. Это существенно сложнее, поскольку интерпретация браузера, неверный ввод и вложенные языки имеют значение.

Рассматривайте санацию, разрешающую подмножество, как граничный эксперимент. Разработчик, создающий систему комментариев, должен сохранить правила атрибутов списков разрешений, выполнить одну операцию выбора из трех операций и проверить, почему это происходит посимвольно, прежде чем изменять самое сложное. Утверждение о трёх остановках на этом слое HTML.

Рабочий пример: один и тот же пользовательский ввод во всех трех — сравнивается полученный текст или разметка.

Рабочий пример: один и тот же пользовательский ввод во всех трех — сравнивается полученный текст или разметка. Учитывая <strong onclick="go()">Привет и пока</strong>, экранирование показывает весь источник, удаление нацелено на Привет и пока, а очистка может сохранить <strong> при удалении onclick в соответствии с проверенной политикой.

Воспроизведите тот же рабочий пример с безвредными материалами вместо материалов заказчика. Записывайте вводимые пользователем данные, наблюдайте за тремя результирующими текстами и подсчитывайте каждый намеренный проход из трех операций. Этот html-след «побег против дезинфекции» позволяет разработчику, создающему систему комментариев, сравнивать или размечать данные, а также выбирать доказательства из трех операций, не угадывая.

Выбор по намерению — экранирование простого текста и примеров кода; богатый текст очищает; раздевание редко бывает правильным

Выбор по намерению — экранирование простого текста и примеров кода; богатый текст очищает; раздевание редко бывает правильным. Выбирайте по назначению: простой текст и примеры экранируются; поддерживаемый форматированный текст очищается специальной поддерживаемой политикой; зачистка — это преобразование с потерями, а не гарантия XSS.

Разместите выбор по намерению в виде простого текста, образцов кода и кода, а также очистку форматированного текста рядом во время проверки выбора из трех операций. Разработчик, создающий систему комментариев, может затем решить, редко ли происходит правильное изменение удаления при преобразовании или в дальнейшем. Храните html-вывод «побег против дезинфекции» о доказательствах выбора из трех операций вне общих утверждений безопасности.

Чего это не касается: политики рендеринга Markdown и политики безопасности контента в качестве дополнительных уровней.

Чего это не касается — политики рендеринга Markdown и политики безопасности контента в качестве дополнительных уровней. Markdown и Content Security Policy добавляют отдельные этапы. Markdown создает HTML, который по-прежнему требует безопасного рендеринга, тогда как CSP может ограничить последствия, но не исправляет небезопасное решение вывода.

Определите, что это не значит, прежде чем запускать выбор из трех операций. Сохраните рендеринг уценки обложки и в качестве элемента управления проверьте кодовые точки, лежащие в основе политик безопасности контента, как и сопоставьте дополнительные уровни следующему интерпретатору. Это делает доказательства выбора из трех операций проверяемыми для разработчика, создающего систему комментариев, исследующую escape или санацию html.

Вывод: ToolAcre выполняет только экранирование, а не зачистку или дезинфекцию.

Вывод: ToolAcre выполняет только экранирование, а не зачистку или дезинфекцию. ToolAcre выполняет только экранирующий случай. Он не является дезинфицирующим средством XSS и не принимает враждебный HTML для безопасного расширенного рендеринга; он преобразует входные данные, похожие на разметку, в текст HTML.

Инструмент Connect Takeaway ToolAcre выполняет переход к наблюдаемому выходу из трех операций. Держите только не зачистку или рядом с результатом одного прохода, затем проверьте, где дезинфекция входит в доказательства выбора трех операций. Разработчик, создающий систему комментариев, теперь может просмотреть доказательства выбора из трех операций как узкий выход из ситуации, а не очистку HTML. Практическое решение, лежащее в основе этой статьи, является конкретным: экранирование отображает разметку как текст, удаление удаляет ее, а очистка сохраняет безопасное подмножество. В этом посте объясняется, что на самом деле делает каждый метод, где каждый из них терпит неудачу и как выбрать правильный для вашего вклада. Действия читателя столь же конкретны: он ссылается на escaper-объект HTML и демонстрирует экранирование фрагмента пользовательского ввода, чтобы он отображался как литеральная разметка.