HTML浄化器で要素を許可するにはどうすればよいですか?HTML浄化器で<audio>要素を許可するにはどうすればよいですか?
私はその後、$def->addAttribute('audio', 'src', 'CDATA');
を試みたが、それは働いていないなど
を私は$config->set('HTML.Allowed', 'audio');
を試してみましたが、今では<p>, <br>
を含む他のすべての要素を削除します。
HTML浄化器で要素を許可するにはどうすればよいですか?HTML浄化器で<audio>要素を許可するにはどうすればよいですか?
私はその後、$def->addAttribute('audio', 'src', 'CDATA');
を試みたが、それは働いていないなど
を私は$config->set('HTML.Allowed', 'audio');
を試してみましたが、今では<p>, <br>
を含む他のすべての要素を削除します。
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>
を追加すると動作します。
"これはうまくいかない"問題について十分に説明されていないので、私はさらに情報を追加することをお勧めします。 – peterh