3

HTMLPurifier はデフォルトで、私が許可したくない多くのタグを許可します。ドキュメントによると、次のような定義を追加する必要があります。

$config = HTMLPurifier_Config::createDefault();
if ($def = $config->maybeGetRawHTMLDefinition()) {
    $def->addAttribute('a', 'target', new HTMLPurifier_AttrDef_Enum(array('_blank','_self','_target','_top')));
}
$purifier = new HTMLPurifier($config);

問題は、から来るすべてのタグを削除する方法が見つからないことHTMLPurifier_Config::createDefault();です。

たとえば、HTML<div>Sometext</div>は上記の初期化コードを使用して DIV タグを保持します。

<strong>のみを許可するようにHTMLPurifier を設定するにはどうすればよい<a href="*">です<p>か?

4

2 に答える 2

3

あなたは言う:「ドキュメントによると、このような定義を追加する必要があります」。

ライブラリを最後にチェックしたとき (約 1 年前) から何か基本的な変更がない限り、それは完全に真実ではありません。その部分は、HTML Purifierにネイティブに認識されていない新しい属性を教えたい場合に存在します。たとえば、HTML Purifier に非標準<font>属性 ( など) を受け入れるようalign=""に教えたい場合は、生の HTML 定義を変更する必要があります。

ただし、ホワイトリストが純粋に通常の HTML 要素で構成されている場合 (あなたのホワイトリストもそうです!)、次の$configオブジェクトを使用するだけで済みます。

$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.AllowedElements', array(
    'strong','a','p'
));
$config->set('HTML.AllowedAttributes', array(
    'a.href'
));
$purifier = new HTMLPurifier($config);

それはうまくいくはずです。その星座で問題が発生していますか?

(このドキュメントもチェックしてください: http://htmlpurifier.org/live/INSTALL )

于 2013-06-20T18:05:52.713 に答える