私はHTML Purifierを使用してユーザの入力を害しています。私は許可された要素のリストを設定しています。つまり、許可されたリストにないタグはすべて削除されます。以下のコード:HTML Purifier - ストリップの代わりに許可されていないタグをエスケープする
require_once "HTMLPurifier.standalone.php";
$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.AllowedElements', array('strong','b','em','i'));
$purifier = new HTMLPurifier($config);
$safe_html = $purifier->purify($dirty_html));
だけではなく、その内容を保持したまま、私はリストに含まれていない要素をしたいと思いますが脱出し、テキストとして送り返されます。 、上記に示したホワイトリストが与えられると、次の入力文字列を説明するために
:a
がホワイトリストではないので
<a href="javascript:alert('XSS')"><strong>CLAIM YOUR PRIZE</strong></a>
は、"<strong>CLAIM YOUR PRIZE</strong>"
になります。同様に、
<b>Check the article <a href="http://example.com/">here</a></b>
は"<b>Check the article here</b>"
になります。正規表現ベースの「ハック」に頼ることなく、HTML清浄機の設定を調整することによって、純粋
<a href="javascript:alert('XSS')"><strong>CLAIM YOUR PRIZE</strong></a>
<b>Check the article <a href="http://example.com/">here</a></b>
:
以下に上記の2つの例を有効にする方法はありますか?もしあれば、それはどのように行われたのか知りたい。