HTML エスケープ

XSS 攻撃のリスク低減に役立つ HTML エンティティのエスケープ/アンエスケープ ツール

使用方法

🚀 かんたんスタート

  • テキストエリアに内容(HTML または既にエスケープされたテキスト)を入力
  • エンコード/デコードを選択
  • ボタンをクリックすると変換、結果は同じテキストエリアに表示
  • コピーをクリックして結果を再利用

📌 よくある利用シーン

  • ユーザーコメント:XSS 攻撃を防ぐためにユーザー投稿コメントをエスケープ
  • ブログ記事:記事内でHTMLコードの例を表示
  • フォーラム投稿:ユーザー生成コンテンツを安全に表示
  • チャットメッセージ:チャット機能を通じた悪意のあるコードの拡散を防止
  • フォームデータ:フォーム送信データの処理と表示
  • コード表示:ウェブページでHTML/JavaScriptコードスニペットを表示

🧭 使い方のヒント

  • コンテキスト認識エスケープ:出力場所に基づいて適切なエスケープ戦略を選択
  • サーバーサイド処理:重要なセキュリティエスケープはサーバーサイドで実行
  • ダブルチェック:エスケープ後に出力を確認し、見落としがないことを確認
  • ライブラリの使用:本番環境では手動処理ではなく成熟したエスケープライブラリを使用
  • プレビュー確認:エスケープ後にブラウザコンソールで実際の表示をプレビュー

🎛️ エスケープ規則と実体

  • 一般的な文字:< > & " '(スラッシュ / は原則不要・文脈による)
  • エンティティ形式:特殊文字は &entity; または &#code; 形式に変換されます。例:< は < または < になります
  • 属性エスケープ:引用符は " に変換され、HTML 属性値を保護
  • スクリプト保護:<script> タグは自動的にエスケープされ、JavaScriptインジェクションを防ぐ
  • タグ処理:<div> は <div> に変換され、ブラウザの解析を防ぐ

⚠️ 制限事項と互換性

  • サニタイザではありません:スクリプト/イベント/危険なプロトコルは除去しません。コンテンツのサニタイズと併用してください
  • 不完全な保護:エスケープだけではすべてのXSSを防げない、他のセキュリティ対策と組み合わせる
  • コンテキスト依存:異なる場所では異なるエスケープ戦略が必要(HTMLコンテンツ、属性、JavaScript、CSS)
  • ページをスムーズに保つため、大量のテキストは簡素化して処理される場合があります。分割を推奨します

🔒 プライバシーとセキュリティ

  • すべての処理はブラウザ内で完結し、データはお使いのデバイスから外部に送信されません

❓ よくある質問

XSS 攻撃とは何ですか?

XSS(クロスサイトスクリプティング)は、攻撃者が悪意のあるスクリプトをウェブページに注入してユーザー情報を盗んだり、悪意のある操作を実行したりする攻撃です。HTMLエスケープはXSSに対する基本的な防御です

いつHTMLエスケープが必要ですか?

コメント、メッセージ、フォームデータなど、ユーザー入力を表示するときは常にエスケープが必要です。HTMLタグを含む可能性のあるコンテンツはエスケープが必要です

< と < の違いは何ですか?

どちらも <(小なり記号)を表します。&amp;lt; は名前付き実体(lt = less‑than)、&amp;#60;/&amp;#x3C; は数値/16 進の実体です。現代の HTML では挙動は同じです:可読性なら &amp;lt;、名前付き実体が使えない環境や任意文字・他のマークアップでも通したい場合は &amp;#60;/&amp;#x3C; を使います。末尾のセミコロンは必ず付けてください(例:&amp;lt;)。省略すると後続文字と連結して誤解析されることがあり、例えば「&amp;notin」は「&amp;not;」+「in」→「¬in」になります

エスケープですべてのJavaScriptインジェクションを防げますか?

いいえ。HTMLエスケープはHTMLコンテキストでのみ機能します。JavaScript、CSS、URLコンテキストでは異なるエスケープ方法が必要です

なぜ &amp;amp;lt; のような二重エスケープが表示されることがあるのですか?

コンテンツが二度エスケープされたためです。最初に &lt; が &amp;lt; になり、次に &amp; が &amp;amp; にエスケープされ、結果として &amp;amp;lt; になります。重複エスケープは避けてください

一部の安全なHTMLタグを許可するにはどうすればよいですか?

エスケープだけでなくサニタイズを行ってください:許可リストで安全なタグ/属性のみを残し、プロトコルもフィルタします。p/br/ul/ol/li/a/strong/em/code/pre/blockquote/h1–h3 のみ許可し、a は href/title/target のみ(http/https/mailto/tel に限定)、img は src/alt のみ。style とすべての on* イベントは削除。DOMPurify/sanitize‑html の利用を推奨、可能ならサーバー側でサニタイズ。信頼できない内容を innerHTML/dangerouslySetInnerHTML に入れないこと。プレーンテキストは textContent を使用

HTML エスケープ/アンエスケープ - オンライン HTML エンティティ ツール - CrateX.app