Оболочка Yii2 HTMLPurifier принимает второй аргумент:
echo HtmlPurifier::process($html, [
// options go here
]);
Для <embed>
вы должны иметь возможность использовать настройку HTML.SafeEmbed. :
echo HtmlPurifier::process($html, [
'HTML.SafeEmbed' => true,
]);
К сожалению, для <audio>
основной проблемой здесь является то, что HTML Purifier не поддерживает HTML5, что значительно усложнит его добавление.
Существуют предоставляемые пользователями исправления, позволяющие HTML Purifier понимать HTML5, но, насколько мне известно, , аудит не проводился, поэтому трудно сказать, как это повлияет на безопасность вашего сайта. (Возможно, HTML Purifier с пользовательскими определениями HTML5 все же лучше, чем вообще отсутствие HTML Purifier.)
Я дал несколько приблизительных инструкций о том, как сделать HTML Purifier (саму библиотеку, а не ее оболочку Yii2) осведомленной только о теге <audio>
на еще один вопрос. Цитирование соответствующих частей:
Вам нужно будет взглянуть на "Настроить!" документация конечного пользователя, где рассказывается, как добавлять теги и атрибуты, о которых HTML Purifier не знает.
Процитируем наиболее яркий пример кода из связанной документации (этот код учит HTML Purifier работе с тегом <form>
):
Время для некоторого кода:
$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.DefinitionID', 'enduser-customize.html tutorial');
$config->set('HTML.DefinitionRev', 1);
$config->set('Cache.DefinitionImpl', null); // remove this later!
$def = $config->getHTMLDefinition(true);
[...]
$form = $def->addElement(
'form', // name
'Block', // content set
'Flow', // allowed children
'Common', // attribute collection
array( // attributes
'action*' => 'URI',
'method' => 'Enum#get|post',
'name' => 'ID'
)
);
$form->excludes = array('form' => true);
Каждый из параметров соответствует одному из заданных нами вопросов. Обратите внимание, что мы добавили звездочку в конец атрибута действия, чтобы указать, что это необходимо. Если кто-то укажет форму без этого атрибута, тег будет удален. Кроме того, дополнительная строка в конце — это специальное дополнительное объявление, которое предотвращает вложение форм друг в друга.
После того, как вы выполнили эти инструкции, чтобы ваша процедура очистки знала о <audio>
, добавление тега <audio>
в белый список конфигурации будет работать.
Итак, вкратце, если вы хотите очистить только <audio>
тегов, не теряя их полностью, вам придется провести некоторое исследование возможностей тегов и добавить информацию в HTML Purifier.
Вы можете основывать свой код на том, что можно найти в файл HTML5Definition.php
xemlock/htmlpurifier-html5, если вы не хотите работать с ним с нуля.
person
pinkgothic
schedule
02.09.2018
HtmlPurifier
удаляет некоторую часть пути или часть тегов, говоря, что это не работает, не очень помогает, что является входом дляHtmlPurifier
и что дает вам вывод поможет понять проблему, и, кстати, вы должны сохранить пути в константе, используяparams.php
файл, и только имя файла должно быть сохранено в базе данных. - person Muhammad Omer Aslam   schedule 02.09.2018HtmlPurifier
, и тот, который вы ожидаете? добавьте его к своему вопросу, отредактировав - person Muhammad Omer Aslam   schedule 02.09.2018$model->audio
и$model->image
? чтобы можно было протестировать - person Muhammad Omer Aslam   schedule 02.09.2018