sanitize-html
と DOMPurify
はどちらもXSS対策のためのライブラリです。
結論: 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が実験的に開発されており、将来的にはこれで良くなる可能性が高いです。
まだほとんどのブラウザでフルに使えませんが、これが完全にリリースされて全てのブラウザが対応したらこれがスタンダードになるでしょう。
「とりあえず出力時にはこれを使っとけ」的な存在になりそうですね。
この記事の著者
阿部 隼也
Abe Shunya
株式会社プッシュ 代表取締役社長・創業者。東京都出身。横浜市立大学在学中に当社を創業し、SEOなどデジタルマーケティング事業や、ChatGPT入門講座を代表とするプライムアカデミー事業を立ち上げた。技術も好きで、自らコードを書きながらサービスを開発する。
Twitter(X)アカウント