HTMLエンティティ エンコーダー・デコーダー
ブラウザ内で特殊文字をHTMLエンティティに変換、または元に戻す。3つのエンコードモード — 特殊文字のみ/非ASCII全て/数値のみ — 冪等エンコードで安全。
HTMLエンティティとは?
HTMLエンティティは、HTMLソース内の予約文字や非ASCII文字を表すエスケープシーケンスです。最も一般的な5文字 — & < > " ' — はブラウザがHTMLマークアップとして解釈しないようにエンティティ化する必要があります。エンティティで任意のUnicodeコードポイントを埋め込めます。
名前付きと数値エンティティ
名前付きエンティティ(&や©など)は読みやすいが約250文字に限定されます。数値エンティティ(&や&)はあらゆるUnicodeコードポイントで動作し、普遍的にサポートされます。迷った場合、特にXMLでは数値を使用してください。
HTMLをいつエスケープすべきか?
ユーザー由来のテキストをHTMLに挿入する前に必ずエスケープしてください — コメント、検索、プロフィール、エラーメッセージ。このステップを飛ばすのが最も一般的なXSSバグです。最新のテンプレートエンジンやフレームワークは自動で行いますが、生の文字列連結は行いません。
URLエンコードが必要ですか?URLエンコーダー/デコーダーをご利用ください。
主な用途
- XSS対策: ユーザーのコメント・プロフィール・検索クエリをHTMLに表示する前にエスケープし、スクリプト注入をブロックします。
- メールテンプレートの安全性: トランザクションメールの動的フィールドをエンコードし、HTMLメーラーがテキストとして表示するようにします。
- 静的サイトビルダー: ビルド時にマークダウン由来のコンテンツを事前エンコードし、XSSに強いHTMLを生成します。
- JSONからHTMLへの移行: HTML特殊文字を含むAPIフィールドをサーバーテンプレートに貼る前にエンティティ化します。
- ログとデバッグ: HTMLログビューワーに書き込む前に生のペイロードをエンコードしてレイアウト崩れを防ぎます。
- ドキュメントスニペット: <code>ブロック内でHTMLマークアップをそのまま表示するため山括弧をエンティティ化します。
- レガシーCMS移行: 古いCMSからエクスポートしたHTMLエンティティ化コンテンツをプレーンテキストにデコードします。
FAQ
HTMLエンティティとは何で、なぜ必要ですか?
予約文字(& < > " ')と非ASCII文字をHTMLパースを壊さずに表現するエスケープシーケンスです。
名前付きと数値、どちらを使う?
XML/RSS/SGMLなど非HTMLコンテキストでは数値(&, &)、可読性を重視する手書きHTMLでは名前付き(&, ©)を使います。
ユーザー投稿コンテンツでHTMLをいつエスケープする?
DOMPurifyなど安全なサブセットを許可するサニタイザーを明示的に使う場合を除き、常にエスケープが必要です。エスケープなしの直接連結は典型的なXSS脆弱性です。
'や'をどうデコードする?
両方ともアポストロフィ(')にデコードされます。このデコーダーは'、'、'すべてを受け付けます。
このツールはデータをどこかに送信しますか?
いいえ。エンコードとデコードはすべてブラウザ内で実行されます。テキストがデバイスから外に出ることはありません。
数字で見る
- HTML Living Standardは約250の名前付き文字参照を定義 — ほとんどのブラウザは古いHTML 4.01セットも受け入れます
- OWASPは信頼できないテキストをHTML本文に挿入する際、5文字(
&、<、>、"、')のエスケープを推奨 - 数値文字参照(例:
&)は任意のUnicodeコードポイントで動作 — 名前付きエンティティが使えない場合に便利 - XMLは5つの名前付きエンティティ(
amp lt gt quot apos)のみサポート — 厳格なXMLパーサーは©のようなHTMLエンティティを拒否