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()インライン スタイルは確かに危険です。JavaScript は、IE の危険なexpression() ブラウザ固有の動作拡張を使用して挿入できます。

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 に答える