Метод sanitize класса HtmlSanitizer
Метод sanitize класса HtmlSanitizer принимает HTML-строку
и возвращает её очищенную версию. Из строки удаляются опасные теги
(например, script), небезопасные атрибуты (например, onclick)
и потенциально вредные URL. Первым параметром передаётся исходный HTML,
вторым - контекст санитизации (по умолчанию 'default').
Синтаксис
public function sanitize(string $html, string $context = 'default'): string
Пример
Давайте очистим HTML-строку, содержащую опасный тег script:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentHtmlSanitizerHtmlSanitizerInterface;
class SanitizerController extends AbstractController
{
public function index(HtmlSanitizerInterface $sanitizer): Response
{
$html = '<p>hello</p><script>alert("abcde")</script>';
$res = $sanitizer->sanitize($html);
return new Response($res);
}
}
?>
Результат выполнения кода:
<p>hello</p>
Пример
Давайте очистим HTML с небезопасным атрибутом onclick:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentHtmlSanitizerHtmlSanitizerInterface;
class SanitizerController extends AbstractController
{
public function index(HtmlSanitizerInterface $sanitizer): Response
{
$html = '<a href="/user" onclick="alert(\'abcde\')">user</a>';
$res = $sanitizer->sanitize($html);
return new Response($res);
}
}
?>
Результат выполнения кода:
<a href="/user">user</a>
Пример
Давайте очистим HTML в контексте 'article', разрешающем больше тегов:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentHtmlSanitizerHtmlSanitizerInterface;
class SanitizerController extends AbstractController
{
public function index(HtmlSanitizerInterface $sanitizer): Response
{
$html = '<article><h2>article</h2><p>hello</p></article>';
$res = $sanitizer->sanitize($html, 'article');
return new Response($res);
}
}
?>
Результат выполнения кода:
<article><h2>article</h2><p>hello</p></article>
Смотрите также
-
класс
HtmlSanitizer,
который очищает HTML от опасного содержимого -
метод
sanitizeFor,
который очищает HTML для конкретного контекста -
функция
dd,
которая выводит дамп переменной и завершает работу -
функция
dump,
которая выводит дамп переменной