PHP

HTML Purifier を使って html を消毒する

More than 5 years have passed since last update.

HTML の入力を許容するケースでの、 XSS 対策として。

徳丸本 P117 に紹介されている HTML Purifier を利用。


html_purifier.php

<?php

require_once('$PATH_TO_LIBRARY/HTMLPurifier.includes.php');
use HTMLPurifier;
use HTMLPurifier_Config;

function sanitize($tainted_html) {
$config = HTMLPurifier_Config::createDefault();
$config->set('Cache.SerializerPath', $PATH_TO_TEMPORARY_DIR);
$purifier = new HTMLPurifier($config);
return $purifier->purify($tainted_html);
}


バージョンは Version 4.5.0 でした。

Cache.SerializerPath には、書き込み権限のあるディレクトリを指定すること。

キャッシュを利用したくない場合は、 Cache.DefinitionImpl に null を指定することもできるが、パフォーマンスが落ちるとのこと。

その他細かい設定は http://htmlpurifier.org/live/configdoc/plain.html を参照。

include には、 HTMLPurifier.auto.php を使うこともできるけど、

オペコードキャッシュ利用してるなら HTMLPurifier.autoload.php でなくHTMLPurifier.includes.php 使ってもいいんじゃないかな。

HTMLPurifier_Bootstrap::registerAutoload とか泣ける。。。


Link