HTML エスケープ/アンエスケープ
HTML エスケープ/アンエスケープ
HTML エスケープ/アンエスケープ: HTML エンティティのエスケープとアンエスケープをサポートし、特殊文字とタグを処理します。名前付きおよび数値エンティティ形式を自動検出し、XSS 攻撃を防止し、ユーザー入力の表示、コード例、セキュアなコンテンツ処理に適しています。
かんたんスタート
よくある利用シーン
ユーザーコメント
XSS 攻撃を防ぐためにユーザー投稿コメントをエスケープ
ブログ記事
記事内でHTMLコードの例を表示
フォーラム投稿
ユーザー生成コンテンツを安全に表示
チャットメッセージ
チャット機能を通じた悪意のあるコードの拡散を防止
フォームデータ
フォーム送信データの処理と表示
コード表示
ウェブページでHTML/JavaScriptコードスニペットを表示
補足シナリオ
html entities、escape html、unescape html も同じ確認フローでまとめて扱え、コピーや書き出し前の確認を進めやすくします。
使い方のヒント
エスケープ規則と実体
制限事項と互換性
セッション管理
よくある質問
XSS(クロスサイトスクリプティング)は、攻撃者が悪意のあるスクリプトをウェブページに注入してユーザー情報を盗んだり、悪意のある操作を実行したりする攻撃です。HTMLエスケープはXSSに対する基本的な防御です
コメント、メッセージ、フォームデータなど、ユーザー入力を表示するときは常にエスケープが必要です。HTMLタグを含む可能性のあるコンテンツはエスケープが必要です
どちらも <(小なり記号)を表します。&lt; は名前付き実体(lt = less‑than)、&#60;/&#x3C; は数値/16 進の実体です。現代の HTML では挙動は同じです:可読性なら &lt;、名前付き実体が使えない環境や任意文字・他のマークアップでも通したい場合は &#60;/&#x3C; を使います。末尾のセミコロンは必ず付けてください(例:&lt;)。省略すると後続文字と連結して誤解析されることがあり、例えば「&notin」は「&not;」+「in」→「¬in」になります
いいえ。HTMLエスケープはHTMLコンテキストでのみ機能します。JavaScript、CSS、URLコンテキストでは異なるエスケープ方法が必要です
コンテンツが二度エスケープされたためです。最初に < が &lt; になり、次に & が &amp; にエスケープされ、結果として &amp;lt; になります。重複エスケープは避けてください
エスケープだけでなくサニタイズを行ってください:許可リストで安全なタグ/属性のみを残し、プロトコルもフィルタします。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 を使用