Очистить собственное HTML-дерево: Все

Учебные задачи

Из документа будут удалены уязвимости, которые удовлетворяют хотя бы одному из критериев: обработчики событий, элементы w3-includes, элементы applet, area, embed, и т.д. Значение применяется к конкретной операции из примера.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Используйте серверную процедуру учебной обработки. Код без директив вставьте в её тело; отдельные реквизиты конфигурации не нужны.

  2. Все XML, DOM и JSON этого урока создаются из собственных строк в памяти. Не открывайте полученный HTML в браузере и не подставляйте рабочие файлы.

Док = Новый ДокументHTML("Учебная очистка");
Узел = Док.СоздатьЭлемент("script");
Док.ЭлементДокумента.ДобавитьДочерний(Узел);
Док.УдалитьПоКатегории(КатегорияСодержимогоHTML.Все);
Писатель = Новый ЗаписьHTML;
Писатель.УстановитьСтроку();
Запись = Новый ЗаписьDOM;
Запись.Записать(Док, Писатель);
ТекстHTML = Писатель.Закрыть();
Сообщить(ТекстHTML);

Разбор по шагам

  1. Создаётся самостоятельное дерево HTML, не поле просмотра и не браузерная вкладка.

  2. В дерево добавлен узел, соответствующий критерию выбранной категории.

  3. УдалитьПоКатегории меняет DOM; ЗаписьDOM сериализует полученное дерево в строку.

Как проверить результат

  1. В результирующей строке отсутствует добавленный элемент script.

  2. Учебный заголовок документа сохраняется. JavaScript и загрузка fragment.html здесь не выполняются.

Ожидаемый результат

К конкретному HTML-узлу применён штатный критерий очистки.

На что обратить внимание

  1. Одна категория не является полной защитой от всех опасных HTML-конструкций.

  2. Этот опыт не даёт разрешения показывать произвольный пользовательский HTML; результат выводится только текстом.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.