РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1048 of 1361 menu

Класс HtmlSanitizer

Класс HtmlSanitizer предназначен для безопасной очистки HTML-строк. Он удаляет опасные теги, скрипты и атрибуты, которые могут привести к XSS-атакам. Объект класса создаётся с помощью сервиса HtmlSanitizerInterface. Первым параметром в методы передаётся очищаемая HTML-строка, вторым - контекст использования (например, 'default' или 'markdown').

Синтаксис

<?php use Symfony\Component\HtmlSanitizer\HtmlSanitizerInterface; $sanitizer = new HtmlSanitizer($config); $res = $sanitizer->sanitize($html, $context); $res = $sanitizer->sanitizeFor($context, $html); ?>

Пример

Давайте очистим HTML-строку от опасного тега script:

<?php use Symfony\Component\HtmlSanitizer\HtmlSanitizer; use Symfony\Component\HtmlSanitizer\HtmlSanitizerConfig; $config = (new HtmlSanitizerConfig()) ->allowSafeElements(); $sanitizer = new HtmlSanitizer($config); $html = '<p>hello</p><script>alert("abcde")</script>'; $res = $sanitizer->sanitize($html); echo $res; ?>

Результат выполнения кода:

<p>hello</p>

Пример

Давайте очистим HTML для конкретного контекста 'markdown' с помощью метода sanitizeFor:

<?php use Symfony\Component\HtmlSanitizer\HtmlSanitizer; use Symfony\Component\HtmlSanitizer\HtmlSanitizerConfig; $config = (new HtmlSanitizerConfig()) ->allowSafeElements() ->allowElement('a', ['href']); $sanitizer = new HtmlSanitizer($config); $html = '<a href="/user" onclick="alert(1)">user</a>'; $res = $sanitizer->sanitizeFor('markdown', $html); echo $res; ?>

Результат выполнения кода:

<a href="/user">user</a>

Пример

Давайте очистим строку с опасным атрибутом onmouseover:

<?php use Symfony\Component\HtmlSanitizer\HtmlSanitizer; use Symfony\Component\HtmlSanitizer\HtmlSanitizerConfig; $config = (new HtmlSanitizerConfig()) ->allowSafeElements(); $sanitizer = new HtmlSanitizer($config); $html = '<p onmouseover="alert(1)">article</p>'; $res = $sanitizer->sanitize($html); echo $res; ?>

Результат выполнения кода:

<p>article</p>

Смотрите также

  • метод sanitize,
    который очищает HTML-строку
  • метод sanitizeFor,
    который очищает HTML для заданного контекста
  • класс Yaml,
    который парсит и создаёт YAML-строки
  • класс ExpressionLanguage,
    который вычисляет выражения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить