#php #htmlpurifier
Вопрос:
Я пытаюсь разрешить видео на YouTube с помощью HTMLPurifier с помощью этого кода:
require_once __DIR__.
'/lib/HTMLPurifier/HTMLPurifier.auto.php';
$config = HTMLPurifier_Config::createDefault();
$config - > set('URI.AllowedSchemes', array('data' => true)); //autoriser les image base64
$config - > set('HTML.MaxImgLength', null); //autoriser les dimensions en %
$config - > set('HTML.SafeIframe', true);
$config - > set('URI.SafeIframeRegexp', '%. %'); //allow everything to test
$config - > set('HTML.Trusted', true); //trying
$config - > set('HTML.SafeObject', true); //also trying that
$purifier = new HTMLPurifier($config);
$html = $purifier - > purify($html);
Но iframe сохраняются без src
.
Комментарии:
1. Просто быстрый облетный комментарий —
URI.AllowedSchemes
это белый список, поэтому , если вы установите для него значение['data' => true]
, вы запрещаете все другие схемы (например, http, https и т. Д.), Даже если они по умолчанию считаются безопасными. Посмотрим, поможет ли это изменение?2. Я добавил
'https' => true
URI.AllowedSchemes
, и это работает, спасибо3. Тогда я добавлю это в качестве ответа. Рад, что это помогло!
Ответ №1:
URI.AllowedSchemes
это белый список, который вы перезаписываете, чтобы включить data
сюда только схему:
$config - > set('URI.AllowedSchemes', array('data' => true));
Чтобы иметь возможность использовать URL-адреса YouTube, вам нужно https
будет как минимум добавить их в массив.
Как бы то ни было, белый список по умолчанию таков:
array (
'http' => true,
'https' => true,
'mailto' => true,
'ftp' => true,
'nntp' => true,
'news' => true,
'tel' => true,
)
Не забудьте также удалить эти настройки еще раз:
$config - > set('HTML.Trusted', true);
$config - > set('HTML.SafeObject', true);
И подтяните свое регулярное выражение для URI.SafeIframeRegexp
.