HTML Purifierを使ってみた

 

HTML Purifierとは

 
入力したデータをHTMLコードとして出力した際に、XSS対策を考えないといけないですよね?
HTMLコードをサニタイズするときに、htmlspecialcharsすることが多いかと思います。…が、それだけでは不十分な場合が多いと思います。そして最終的にXSS対策として行き着く先の方法の一つとして、HTML Purifierがあります。

 

HTMLPurifierは、HTMLコードの正当性を保持しつつ、悪意のあるコードを弾くことができるPHPのプラグインのツールです。

 

ちなみに、本ブログで使用しているWordpressなどもある程度は自由に入力できますが。XSS対策としてHTML Purifierを使用して悪意のあるコードは弾くようにしているらしいです。
 
 

HTML Purifierの使い方

 

HTML Purifierの使い方はかなりかんたんです。
こちらからダウンロードしてきます。

そして、HTML PurifierConfigに設定を書いてきます。

 

 

HTML.AllowedElements に それぞれ許可したいタグを追加していきます。
このHTML.AllowedElementsに追加されたタグは使えるようになりますが、属性として使用できないものもあるので、それらはHTML.AllowedAttributesに追加していきます。

設定できる項目の詳細はこちらにあります。
結構設定できる項目が多いので、カスタマイズなどの自由度は割と高いと思います。

また、今回は、Iframeは基本的には許可しないが、YoutubeやGoogleMapなどの安全性が高く、エンドユーザーの目を楽しませるためにも許可したいIframeなどがある場合は、下記のようにConfigを追加します。
 

まず、SafeIframeを設定して、

Configを追加して、URI.SafeIframeRegexpに正規表現で http(s)から始まってyoutubeがURLに含まれているもの、googlemapがURLに含まれているものと一致したらSafeIframeとして許可するというふうに追加します。

 

そうすると、youtubu、GoogleMap のIframeは使用できるようになります。

このようにカスタマイズもそれぞれできるので、割りと自由度の高いXSS対策を行うことができます。
 

まとめ

 
XSS対策は開発側からの視点からみた対策と、クライアントの使い勝手の良さから見た対策がありますよね。。。
開発側としては、なるべく、XSS対策は強化したいけど、強化しすぎると、クライアント側の自由度は低くなる・・・。リッチテキストエディタなどにそういった対策を施す場合はとくにです。どうやってXSS対策を強化しつつ、クライアント側の自由度をあげてあげられるかを考えながら対策するのは、本当に骨の折れる作業です。
 
しかし、HTML Purifierを使用すると、カスタマイズして使うことができて、今回のようにある程度の自由度のある中でXSS対策を施すことができるので、HTML Purifierはとても便利なツールでした。
XSS対策を考える際は、試しに使ってみてください!

 
 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です