2

我正在使用 CKEditor 让用户发表他们的评论。我想使用 htmlpurifier 来保护我的 html。但是当我尝试它时,它实际上删除了 CKEditor 完成的所有格式。CKEditor 生成了以下 html

<div class="originalpost"><span style="color:#B22222;">
<em><u><strong><span style="font-size:250%;">
This is Pakistan</span></strong></u></em></span></div>

用htmlpurifier净化后的html变成了这样

<div class="&quot;originalpost&quot;"><span><em><u><strong>
<span>This is Pakistan</span></strong></u></em></span></div>

它实际上删除了所有内联 css 样式,也class="&quot;originalpost&quot;"无法理解。我用下面的方式用 htmlpurifier 净化了 html

require_once("path\HTMLPurifier.auto.php");
$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
$html = "xyzhtml";
$clean_html = $purifier->purify($html);

我想保持用户格式,如何配置 htmlpurifier 以保持用户格式也不要更改内联 css。

4

2 回答 2

2

它实际上删除了所有内联 css 样式

url()内联样式确实很危险 - 可以使用IE 的狡猾expression() 和特定于浏览器的行为扩展将 JavaScript 注入其中。

HTMLPurifier可以解析内联样式并过滤危险的属性和值。您可以通过包含style在您的白名单属性中来启用此功能。

$config->set('HTML.AllowedAttributes', '*.style, ...');

style不包含在默认属性列表中,因为解析样式非常复杂(伴随着错误的可能性)并且大多数应用程序不需要它。

您可以根据需要配置允许使用的属性%CSS.AllowedProperties

我无法重现该&quot;问题,但确保关闭 PHP 的magic_quotes_gpc选项肯定是件好事……

于 2013-03-28T12:25:44.230 回答
0

我敢打赌,您需要关闭 Sybase 引号。

于 2013-03-28T11:01:46.967 回答