3

これが取引です。私は人々にHTMLを教えるのを助けるプロジェクトを作っています。当然、私はそのScumbag Steveを恐れています(図1を参照)。

そのため、非常に特定のホワイトリストで承認されたものを除いて、すべてのHTMLタグをブロックしたかったのです。

これらの承認されたHTMLタグから、有害な属性も削除したいと思います。など。onload_ onmouseoverまた、ホワイトリストによると

私は正規表現について考えましたが、それは悪であり、仕事にはあまり役立たないと確信しています。

誰かが私に正しい方向にナッジを与えることができますか?

前もって感謝します。


図1。

スカムバッグスティーブ

4

3 に答える 3

5
require_once 'library/HTMLPurifier.auto.php';

$config = HTMLPurifier_Config::createDefault();

 // this one is needed cause otherwise stuff 
 // considered harmful like input's will automatically be deleted
$config->set('HTML.Trusted', true);

// this line say that only input, p, div will be accepted
$config->set('HTML.AllowedElements', 'input,p,div');

// set attributes for each tag
$config->set('HTML.AllowedAttributes', 'input.type,input.name,p.id,div.style');

// more extensive way of manage attribute and elements... see the docs
// http://htmlpurifier.org/live/configdoc/plain.html
$def = $config->getHTMLDefinition(true);

$def->addAttribute('input', 'type', 'Enum#text');
$def->addAttribute('input', 'name', 'Text');

// call...
$purifier = new HTMLPurifier($config);

// display...
$html = $purifier->purify($raw_html);
  • NOTE: as you asked this code will run as a Whitelist, only input, p and div are accepted and only certains attributes are accepted.
于 2012-03-28T21:06:28.077 に答える
1

Zendフレームワーク2ストリップタグを使用します。以下の例では、ul、li、p ...、img(src属性のみ)およびリンク(href属性のみ)を受け入れます。他のすべては削除されます。私が間違っていなければ、zf1は同じことをします

     $filter = new \Zend\Filter\StripTags(array(
        'allowTags'   => array(
            'ul'=>array(), 
            'li'=>array(), 
            'p'=>array(), 
            'br'=>array(), 
            'img'=>array('src'), 
            'a'=>array('href')
         ),
        'allowAttribs'  => array(),
        'allowComments' => false)
    );

    $value = $filter->filter($value);
于 2012-10-26T17:56:46.870 に答える
0

タグにはstrip_tagsを使用できます

属性については、「htmlタグから属性を削除するにはどうすればよいですか?」を参照してください。

于 2012-03-27T20:35:27.930 に答える