HTML.Allowed
- это белый список всех разрешенных тегов, поэтому то, что вы, по-видимому, хотите сделать, это объединить $config->get('HTML.Allowed')
с ,audio
в качестве значения.
Сказанное: HTML-подход очистителя к безопасности - это знание HTML-кода - как и в, а не только теги и атрибуты белого списка, оно также гарантирует, что теги имеют смысл в контексте, в котором они находятся, и значения атрибутов выглядят как ожидаемые, что означает, что он должен понять определение HTML, которое вы его кормите. Например, вам не нужен <td>
-tag, встроенный в <div>
-tag, что не имеет смысла; и вы не захотите width="foo"
в своем HTML, что также бессмысленно.
Поскольку, насколько я знаю, HTML-очиститель до сих пор не знает своего пути вокруг HTML5, тэг <audio>
, вероятно, не тот, о котором он сам знает. Вам нужно посмотреть на "Customize!" end-user documentation, где он расскажет вам, как добавить теги и атрибуты, о которых не известно.
Цитирую самый яркий пример кода из связанной документации (этот код учит 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);
Каждый из параметров соответствует на один из вопросов, которые мы задали. Обратите внимание, что мы добавили звездочку в конец атрибута action, чтобы указать, что это необходимо. Если кто-то указывает форму без этого атрибута, тег будет осевым. Кроме того, дополнительная строка в конце представляет собой специальную дополнительную декларацию, которая предотвращает вложение форм внутри друг друга.
После того, как вы выполнили эти инструкции, чтобы сделать ваш очищающая процедура осознает <audio>
, добавив тег <audio>
к вашей конфигурации белый список будет работать.
«Это не работает» недостаточно хорошо описанной проблемы, я предлагаю добавить дополнительную информацию. – peterh