URI.SafeIframeRegexp 不允许使用 HTMLPurifier 的 YouTube 视频

问题描述

我正在尝试使用带有该代码的 HTMLPurifier 允许 youtube 视频:

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

解决方法

URI.AllowedSchemes 是一个白名单,您要覆盖它以在此处仅包含 data 架构:

$config - > set('URI.AllowedSchemes',array('data' => true));

为了能够使用 youtube 网址,您至少需要将 https 添加到数组中。

就其价值而言,default whitelist 是:

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 的正则表达式。