我正在使用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=""originalpost""><span><em><u><strong>
<span>This is Pakistan</span></strong></u></em></span></div>
它实际上删除了所有内联css样式,class=""originalpost""
也无法理解。
我用以下方法用htmlpurifier
require_once("path\HTMLPurifier.auto.php");
$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
$html = "xyzhtml";
$clean_html = $purifier->purify($html);
我想保持用户格式化,如何配置htmlpurifier以保持用户格式化也不会更改内联css。
答案 0 :(得分:2)
它实际上删除了所有内联css样式
内联样式确实很危险 - 可以使用url()
,IE狡猾的expression()
和特定于浏览器的行为扩展将JavaScript注入其中。
HTMLPurifier 可以解析内联样式并过滤危险的属性和值。您可以在列入白名单的属性中添加style
来启用此功能。
$config->set('HTML.AllowedAttributes', '*.style, ...');
style
未包含在默认属性列表中,因为解析样式有很多额外的复杂性(伴随着错误的可能性),大多数应用程序都不需要它。
如果您愿意,可以使用%CSS.AllowedProperties
配置允许的属性。
我无法重现"
问题,但肯定确保关闭PHP的magic_quotes_gpc
选项是一个全面的好事......
答案 1 :(得分:0)
我敢打赌你需要关闭Sybase报价。