設定
privacy.storage_manager.language_settings
テーマ設定
HTML エスケープ
XSS 攻撃のリスク低減に役立つ HTML エンティティのエスケープ/アンエスケープ ツール
🚀 かんたんスタート
- テキストエリアに内容(HTML または既にエスケープされたテキスト)を入力
- エンコード/デコードを選択
- ボタンをクリックすると変換、結果は同じテキストエリアに表示
- コピーをクリックして結果を再利用
📌 よくある利用シーン
- ユーザーコメント:XSS 攻撃を防ぐためにユーザー投稿コメントをエスケープ
- ブログ記事:記事内でHTMLコードの例を表示
- フォーラム投稿:ユーザー生成コンテンツを安全に表示
- チャットメッセージ:チャット機能を通じた悪意のあるコードの拡散を防止
- フォームデータ:フォーム送信データの処理と表示
- コード表示:ウェブページでHTML/JavaScriptコードスニペットを表示
🧭 使い方のヒント
- コンテキスト認識エスケープ:出力場所に基づいて適切なエスケープ戦略を選択
- サーバーサイド処理:重要なセキュリティエスケープはサーバーサイドで実行
- ダブルチェック:エスケープ後に出力を確認し、見落としがないことを確認
- ライブラリの使用:本番環境では手動処理ではなく成熟したエスケープライブラリを使用
- プレビュー確認:エスケープ後にブラウザコンソールで実際の表示をプレビュー
🎛️ エスケープ規則と実体
- 一般的な文字:< > & " '(スラッシュ / は原則不要・文脈による)
- エンティティ形式:特殊文字は &entity; または &#code; 形式に変換されます。例:< は &lt; または &#60; になります
- 属性エスケープ:引用符は &quot; に変換され、HTML 属性値を保護
- スクリプト保護:<script> タグは自動的にエスケープされ、JavaScriptインジェクションを防ぐ
- タグ処理:<div> は &lt;div&gt; に変換され、ブラウザの解析を防ぐ
⚠️ 制限事項と互換性
- サニタイザではありません:スクリプト/イベント/危険なプロトコルは除去しません。コンテンツのサニタイズと併用してください
- 不完全な保護:エスケープだけではすべてのXSSを防げない、他のセキュリティ対策と組み合わせる
- コンテキスト依存:異なる場所では異なるエスケープ戦略が必要(HTMLコンテンツ、属性、JavaScript、CSS)
- ページをスムーズに保つため、大量のテキストは簡素化して処理される場合があります。分割を推奨します
🔒 プライバシーとセキュリティ
- すべての処理はブラウザ内で完結し、データはお使いのデバイスから外部に送信されません
❓ よくある質問
XSS 攻撃とは何ですか?
XSS(クロスサイトスクリプティング)は、攻撃者が悪意のあるスクリプトをウェブページに注入してユーザー情報を盗んだり、悪意のある操作を実行したりする攻撃です。HTMLエスケープはXSSに対する基本的な防御です
いつHTMLエスケープが必要ですか?
コメント、メッセージ、フォームデータなど、ユーザー入力を表示するときは常にエスケープが必要です。HTMLタグを含む可能性のあるコンテンツはエスケープが必要です
&lt; と &#60; の違いは何ですか?
どちらも <(小なり記号)を表します。&lt; は名前付き実体(lt = less‑than)、&#60;/&#x3C; は数値/16 進の実体です。現代の HTML では挙動は同じです:可読性なら &lt;、名前付き実体が使えない環境や任意文字・他のマークアップでも通したい場合は &#60;/&#x3C; を使います。末尾のセミコロンは必ず付けてください(例:&lt;)。省略すると後続文字と連結して誤解析されることがあり、例えば「&notin」は「&not;」+「in」→「¬in」になります
エスケープですべてのJavaScriptインジェクションを防げますか?
いいえ。HTMLエスケープはHTMLコンテキストでのみ機能します。JavaScript、CSS、URLコンテキストでは異なるエスケープ方法が必要です
なぜ &amp;lt; のような二重エスケープが表示されることがあるのですか?
コンテンツが二度エスケープされたためです。最初に < が &lt; になり、次に & が &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 を使用