HTML Purifierは、既知の悪意あるHTMLコードを探すブラックリスト方式ではなく、ホワイトリスト方式を採用している。したがって、正当なHTML文書を構成するすべてのパーツを明示的に指定する必要がある。どのようなコンテキストで何が許されるかは、Smoketestページで確認することができる。正当なHTMLとは何か、要素間の入れ子関係、各要素に付随するHTML属性として正当なものを明確に示すこともHTML Purifierの目的の一つなのだ。CSSにも対応しており、http://で始まるテキストを自動的にHTMLのhref要素に書き換えるといったことができる。HTML Purifierへの乗り換えを検討する場合は、各種HTML検証ツールと比較しているComparisonページが参考になるだろう。
HTML PurifierはUbuntu、Fedora、openSUSE用のパッケージさえ提供しておらず、PEARを使ってインストールする。PEARによるインストールは高速で、最新版に移行するのも簡単(pear upgradeというコマンドを実行するだけ)。スクリプトにパスを指定する必要がないため、スクリプトにHTML Purifierを含めるのも容易だ。このほか、自分でソースからビルドできるようtarballが用意されている(tarballは、ドキュメントや依存するパッケージの収載の有無が異なる3種類が用意されている)。
HTML PurifierをPEARを使ってインストールする場合は、まずphp-pearパッケージをインストールし、その後pearコマンドでHTML Purifierをインストールする。一例を下に示す。これはHTML Purifierを/usr/share/pear/HTMLPurifierにインストールする。
pear channel-discover htmlpurifier.org pear install hp/HTMLPurifier
筆者が試用したときは、この状態でHTML Purifierを使おうとするとエラーになった。Apacheのログ・ファイルを見ると、Cache.SerializerPathパスが存在しないとなっている。/usr/share/pear/HTMLPurifier/DefinitionCache/Serializerはコンテンツをキャッシュするためのパスで書き込み可能でなければならない。このエラーを回避するには、キャッシュしないようにするか(INSTALLファイルに詳しく説明されている)、/usrにディレクトリーを作って一時的なキャッシュとして使うか、あるいは/varに新しいディレクトリーを作ってここにキャッシュする。下に、最後の方法による場合の例を示す。
# mkdir -p /var/cache/HTMLPurifier # chown apache /var/cache/HTMLPurifier # chmod o-rwx /var/cache/HTMLPurifier # ls -ld /var/cache/HTMLPurifier drwxr-x--- 2 apache root 4096 2008-06-25 14:25 /var/cache/HTMLPurifier
残念ながら、SerializerPathのデフォルト・パスはHTMLPurifier/ConfigSchema/schema.serの中に埋め込まれている。これは、テキストの冒頭にテキスト長を指定するタイプのファイルなので、人間が編集するにはあまり適していない。したがって、ご自分のPHPコードの構成オブジェクトを使ってパスを変更するか、もっといいのは、ご自分のWebサイト向けに構成オブジェクトを設定するPHP関数を作っておく。
