開発 へ戻る
HTML サニタイズ — XSS 防御 (script / on* / javascript:)

HTML サニタイズ — XSS 防御 (script / on* / javascript:)

DOMPurify でユーザー投稿 HTML から XSS 攻撃ベクター (script 要素・on* イベントハンドラ・javascript: URL・data: URL の不正利用・iframe など) を取り除きます。厳格 / 標準 / 許容の 3 モードでプロファイルを切替可能。CMS や掲示板に渡す前のサニタイズ、Markdown→HTML 変換結果の安全化、ブログ移行時のレガシー HTML 清掃などに。すべてブラウザ内で完結し、HTML は外部に送信されません。

開発セキュリティ整形

使い方

サニタイズしたい HTML を入力欄に貼り付け、プロファイル (厳格 / 標準 / 許容) を選んで「サニタイズを実行」を押します。厳格は太字・斜体・段落のみ、標準はリンクと画像・見出し・表まで、許容は id / class / style や div / span まで残します。すべてのプロファイルで script 要素、on* イベントハンドラ (onclick / onerror など)、javascript: URL、危険な data: URL、iframe、form / input、object / embed などの XSS 攻撃ベクターは無条件で除去します。結果はサニタイズ後 HTML テキスト + sandboxed iframe プレビュー (スクリプトはブロック) の両方で確認可能。CMS や掲示板にユーザー投稿 HTML を保存する前、または Markdown→HTML 変換結果を引き渡す前のクリーンアップに。

よくある質問

DOMPurify を使っていますか?
はい。実績ある DOMPurify ライブラリ (Cure53) をそのままブラウザ内で実行しています。バージョンはサイト管理画面の /libraries で確認できます。
厳格 / 標準 / 許容 の違いを教えてください。
厳格はテキスト + 基本書式 (strong / em / b / i / u / s / p / br / blockquote / code / pre) のみ残します。標準はそれに加えて a / img / h1〜h6 / ul / ol / li / table 系を許可。許容は id / class / style 属性と span / div も保持します。すべてのプロファイルで script / on* / javascript: / iframe などの XSS ベクターは除去されます。
サニタイズ後の HTML はそのまま innerHTML に渡して安全ですか?
プロファイルに応じて DOMPurify が許可した要素・属性のみが残るため、innerHTML として代入しても XSS は発生しないという前提です。ただし許容モードで style 属性を残す場合、CSS 経由の情報漏洩 (URL exfiltration など) には別途 CSP 等で対策してください。
Markdown→HTML 変換結果のサニタイズに使えますか?
使えます。markdown-html-convert の出力を本ツールに貼って、必要なプロファイルで再サニタイズしてください。掲示板や CMS に保存する場合は標準モードを推奨します。
プレビューの iframe は本当に安全?
プレビュー iframe には `sandbox=""` (許可ゼロ) を指定しているため、結果 HTML 内に script があっても実行されず、外部リンクも辿れません。あくまで「見た目の確認用」です。
入力データはサーバーに送信されますか?
いいえ。DOMPurify はブラウザ内で動くため、HTML がネットワークに出ることはありません。

類似のツール

HTML エンティティ変換 — &/</> を安全に

HTML エンティティ変換 — &/</> を安全に

HTML の特殊文字 (< > & " ') を実体参照 (&amp;lt; など) に encode したり、&amp;amp; → &amp; のように decode したりします。Mode 切替で双方向、すべて非 ASCII 文字を 10 進数値参照に変換するオプション付き。ブログのコードサンプル貼り付け、XSS 対策のエスケープ確認、メール本文の HTML 化準備などに使えます。

開発エンコードデコード
Markdown ⇄ HTML 変換 — 双方向で往復

Markdown ⇄ HTML 変換 — 双方向で往復

Markdown を HTML に、HTML を Markdown に双方向変換します。ブログから WordPress、静的サイトジェネレータへの移行、Web ページから README 化など、フォーマット間の橋渡しに最適。marked と turndown をブラウザ内で実行するので、原稿を外部に送信せずに変換できます。

開発Markdown変換
Markdown プレビュー — リアルタイムレンダリング

Markdown プレビュー — リアルタイムレンダリング

Markdown を入力すると、横並びでリアルタイムに HTML プレビューが表示されます。GFM (テーブル / タスクリスト / 自動リンク) と改行→<br> の変換に対応。レンダリングした HTML をコピー / ダウンロードできます。すべての処理はブラウザ内で完結します。

開発Markdown
IPv6 整形 — 圧縮 / 展開 / リバース DNS / 種別判定

IPv6 整形 — 圧縮 / 展開 / リバース DNS / 種別判定

IPv6 アドレス (::1 / 2001:db8::1 / fe80::1%eth0 / [::1]:8080 など) を解析して、RFC 5952 準拠の圧縮形・全 8 群を展開した正規化形・ip6.arpa 形式のリバース DNS 名・16 進連結・2 進展開を一覧表示。ループバック / リンクローカル (fe80::/10) / ユニークローカル (fc00::/7) / マルチキャスト (ff00::/8) / グローバルユニキャスト (2000::/3) / IPv4-mapped (::ffff:0:0/96) / 文書化用 (2001:db8::/32) などのカテゴリも自動判定。IPv4-mapped は IPv4 アドレスへ自動逆引き。ゾーン ID (%eth0) と角括弧表記にも対応。すべてブラウザ内で処理、外部送信なし。

開発整形