2016-07-05 11 views
1

HTML浄化器で要素を許可するにはどうすればよいですか?HTML浄化器で<audio>要素を許可するにはどうすればよいですか?

私はその後、$def->addAttribute('audio', 'src', 'CDATA');を試みたが、それは働いていないなど

を私は$config->set('HTML.Allowed', 'audio');を試してみましたが、今では<p>, <br>を含む他のすべての要素を削除します。

+0

"これはうまくいかない"問題について十分に説明されていないので、私はさらに情報を追加することをお勧めします。 – peterh

答えて

1

HTML.Allowedは許可されているすべてのタグのホワイトリストなので、おそらく$config->get('HTML.Allowed')を値として,audioに連結します。

言い換えれば、セキュリティに対するHTML Purifierのアプローチは、HTMLフレーバ認識です。ホワイトリストのタグや属性ではなく、タグがそのコンテキスト内で意味を持ち、属性値が期待通りに見えるようにします。実際にはを理解していることを意味します。たとえば、<td>タグを<div>タグに埋め込むことは望ましくありません。あなたのHTMLにwidth="foo"が欲しくないと思っても意味がありません。

私が知る限り、HTML Purifierは依然としてHTML5の周囲の道をまだ知りませんから、<audio>タグはおそらく本来知っているものではありません。 "Customize!" end-user documentationを参照する必要があります。ここでは、HTML Purifierが認識していないタグと属性を追加する方法を説明します。

リンクドキュメント(このコードは<form>タグについてHTML清浄機を教え)から最も鮮やかなコード例を引用する:いくつかのコードのための

時間:

$config = HTMLPurifier_Config::createDefault(); 
$config->set('HTML.DefinitionID', 'enduser-customize.html tutorial'); 
$config->set('HTML.DefinitionRev', 1); 
$config->set('Cache.DefinitionImpl', null); // remove this later! 
$def = $config->getHTMLDefinition(true); 
[...] 
$form = $def->addElement(
    'form', // name 
    'Block', // content set 
    'Flow', // allowed children 
    'Common', // attribute collection 
    array(// attributes 
     'action*' => 'URI', 
     'method' => 'Enum#get|post', 
     'name' => 'ID' 
    ) 
); 
$form->excludes = array('form' => true); 

パラメータの対応をそれぞれ私たちが尋ねた質問の一つに。 action属性の末尾にアスタリスクを追加して、必須であることを示します。誰かがその属性を持たないフォームを指定すると、タグはaxedになります。また、末尾の余分な行は、フォームがお互いにネストされるのを防ぐ特別な追加の宣言です。

あなたが<audio>のあなたの浄化ルーチンを認識させるために、これらの指示に従ったら、あなたの設定ホワイトリストにタグ<audio>を追加すると動作します。

関連する問題