DOMPurify vs sanitize-html 比較してみた。XSS対策にどっちを選べば良いのか

sanitize-htmlDOMPurify はどちらもXSS対策のためのライブラリです。

DOMPurifyのGitHub

sanitize-htmlのGitHub

結論: DOMPurifyを使うべき

結論、sanitize-htmlを選ぶべき理由はほとんどありません。DOMPurifyのほうが良いです。

なぜなら、

  • より軽い
  • よりセキュア(と期待できる開発者)
  • XSS対策が目的
  • よくメンテナンスされている
  • GitHubスター数が3倍ほど多い

だからです。

もちろん、プロジェクトによって要件は大きく異なるので一択とまでは言えませんが、少なくともとりあえずXSS対策したいよ、という場合にはDOMPurifyを選択すれば良いと思います。

DOM Purifyの特徴

DOMPurifyはテキストの出力時にクライアントのJavaScriptで利用されることを前提としています。

ただし、Node.jsでも利用できます。

その目的はXSS対策です。セキュリティの専門家が開発に参加しているということで信頼感があります。

DOMPurify は、Web 攻撃と XSS に豊富な経験を持つセキュリティ担当者によって作成されました。

DOMPurifyのGitHub

sanitize-htmlの特徴

sanitize-htmlはテキストの保存時にサーバーサイドのJavaScript(Node.js)で利用されることを前提としています。

ただし、クライアントのJavaScriptでも利用できます。

その目的はHTMLをクリーンアップすることです。

もちろんXSS対策にも利用できますし、そのように利用されているケースもあります。

しかし、基本的にはXSS対策というよりも、保存されるHTMLをクリーンにしておきたい場合が主な想定されるユースケースのようです。

HTMLサニタイズのルールを厳格にカスタマイズできるようなので良いとか。ただ、そういうカスタマイズはDOMPurifyでも出来ますので、sanitize-htmlの独自の価値はそこまで無いように思われます。

おまけ:HTML Sanitizer API

Sanitizer APIというブラウザのAPIが実験的に開発されており、将来的にはこれで良くなる可能性が高いです。

まだほとんどのブラウザでフルに使えませんが、これが完全にリリースされて全てのブラウザが対応したらこれがスタンダードになるでしょう。

「とりあえず出力時にはこれを使っとけ」的な存在になりそうですね。

コメントを残す

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