Я использую приведенную ниже конфигурацию для очистки ввода от пользователя в моем проекте Yii, используя встроенную поддержку HtmlPurifier.
array(
'URI.AllowedSchemes' => array(
'http' => true,
'https' => true,
),
"HTML.SafeEmbed" => true,
'HTML.TargetBlank' => true,
"HTML.SafeIframe" => true,
"Filter.YouTube" => true,
'URI.SafeIframeRegexp' => '%^(https?:)?//(www\.youtube(?:-nocookie)?\.com/embed/|player\.vimeo\.com/video/)%'
),
Пример:-
<iframe width="560" height="315" src="https://www.youtube.com/embed/Xe2nlti47kA" frameborder="0" allowfullscreen></iframe>
Выше URL при сохранении после очистки преобразуется в код ниже iframe
<iframe width="560" height="315" src="https://www.youtube.com/embed/Xe2nlti47kA" frameborder="0"></iframe>
Как мы можем разрешить атрибут allowfullscreen как безопасный? Решит ли это какое-либо изменение в регулярном выражении или нужно применить собственное решение?
allowfullscreen => 'Bool#allowfullscreen'
для тегов<iframe>
: repo.or.cz/w/htmlpurifier.git/blob/HEAD:/library/HTMLPurifier/ — в основном, HTML Purifier может оставлять только атрибуты и указывает на то, что он понимает структуру, которая в данном случае не указана. Вы можете попробовать исправить этот файл (не пробовали, не рекомендую, но имеет преимущество в быстроте), или вы можете взглянуть на документация по настройке: htmlpurifier.org/docs/enduser-customize.html - person pinkgothic   schedule 07.06.2015