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 の特殊文字 (< > & " ') を実体参照 (&lt; など) に encode したり、&amp; → & のように decode したりします。Mode 切替で双方向、すべて非 ASCII 文字を 10 進数値参照に変換するオプション付き。ブログのコードサンプル貼り付け、XSS 対策のエスケープ確認、メール本文の HTML 化準備などに使えます。
Markdown ⇄ HTML 変換 — 双方向で往復
Markdown を HTML に、HTML を Markdown に双方向変換します。ブログから WordPress、静的サイトジェネレータへの移行、Web ページから README 化など、フォーマット間の橋渡しに最適。marked と turndown をブラウザ内で実行するので、原稿を外部に送信せずに変換できます。
Markdown プレビュー — リアルタイムレンダリング
Markdown を入力すると、横並びでリアルタイムに HTML プレビューが表示されます。GFM (テーブル / タスクリスト / 自動リンク) と改行→<br> の変換に対応。レンダリングした HTML をコピー / ダウンロードできます。すべての処理はブラウザ内で完結します。
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) と角括弧表記にも対応。すべてブラウザ内で処理、外部送信なし。