CGM(コンシューマジェネレートメディア)の大きな問題はユーザの投稿した文字がセキュリティ上問題があるかどうかチェックしなければならないことでしょう。特にHTMLを許容して投稿できる場合です。 テキストだけにしてしまえば問題はありませんが、問題のないHTMLコードは扱いたい、そう考える方にお勧めなライブラリがDOMPurifyです。

DOMPurifyのデモ。問題のある箇所を取り除いてくれます。

DOMPurifyの使い方

まずスクリプトを読み込みます。

<script type="text/javascript" src="purify.js"></script>

後は表示する際に DOMPurify.sanitize を通します。

var clean = DOMPurify.sanitize(dirty);

これで奇麗なHTMLコードになるといった具合です。DOMPurifyの特徴としてはHTML5/SVG、MathMLをサポートしているという点があります。許容するタグの指定もできるようになっています。

単純に正規表現で置き換えたりしようとすると回避されてXSSを埋め込まれる可能性があります。その結果、独自記法にしたりテキストだけにしてしまうことが多いのではないでしょうか。新しい選択肢としてDOMPurifyは面白そうです。

DOMPurifyはJavaScript製、Mozilla Public Licenseのオープンソース・ソフトウェアです。

73ms cure53/DOMPurify