问题描述
我正在尝试使用带有该代码的 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
的正则表达式。