Yii1 - HtmlPurifier удаляет атрибут allowfullscreen

Я использую приведенную ниже конфигурацию для очистки ввода от пользователя в моем проекте 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 как безопасный? Решит ли это какое-либо изменение в регулярном выражении или нужно применить собственное решение?


person Mihir Patel    schedule 06.06.2015    source источник
comment
«Проблема», похоже, заключается в том, что HTML Purifier вообще не имеет атрибута 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


Ответы (2)


Уже есть полезная ссылка, которая решит ответ..... Нам нужно реализовать собственный класс, чтобы разрешить атрибут «allowfullscreen». Это добавит этот атрибут в очищенный код iframe.

Ссылка http://sachachua.com/blog/2011/08/drupal-html-purifier-embedding-iframes-youtube/ Отвечает Сонни HTMLPurifier iframe Видео Vimeo и Youtube

Шаги

1) Включите класс из приведенного выше URL.

2) Установите Filter.custom точно так, как показано в приведенном выше URL-адресе.

Настройка параметров Html Purifier может быть разной в фреймворках.

person Mihir Patel    schedule 08.06.2015

Используйте следующий параметр в конфигурации HtmlPurifier.

HTML.IframeAllowFullscreen: true
person Sergey Savenko    schedule 28.08.2020
comment
Пожалуйста, добавьте некоторое объяснение к вашему ответу, чтобы другие могли извлечь из него уроки. - person Nico Haase; 28.08.2020