htmlpurifier删除CKEDitor完成的所有格式

时间:2013-03-28 09:48:29

标签: php security ckeditor xss htmlpurifier

我正在使用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。

2 个答案:

答案 0 :(得分:2)

  

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

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

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

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

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

如果您愿意,可以使用%CSS.AllowedProperties配置允许的属性。

我无法重现&quot;问题,但肯定确保关闭PHP的magic_quotes_gpc选项是一个全面的好事......

答案 1 :(得分:0)

我敢打赌你需要关闭Sybase报价。