HTML Entities
HTML エンティティは、HTML で特別な意味を持つ文字(<、>、&、")を &name; や &#NNN; の形式にエスケープし、マークアップとして解釈されず文字どおり表示させる。
目的
ユーザー入力や動的コンテンツがブラウザに HTML タグとして実行されるのを防ぐ。XSS 対策の基礎となる防御である。
メカニズム
< > & " ' などの名前付きエンティティが XML で定義済みの 5 文字をカバーする。数値エンティティ &#NNN; は 10 進コードポイント、&#xNNN; は 16 進コードポイントを使う。デコードは DTD のエンティティ表に従って展開する。
ユースケース
- HTML 内で < > & をテキストとして表示
- XSS 対策の出力エスケープ
- HTML メールでの特殊記号
- XML コンテンツのエスケープ
例
- 入力
<script>Output<script>After escaping, the browser shows text instead of executing a script
よくあるエラー
- Escaping only < and > while missing quotes, enabling XSS in attribute contexts
- Escape by context: text needs < > &; attributes additionally need " and '
関連用語
URL Encoding
URLエンコーディング(パーセントエンコーディング)は、URLに使用できない文字を%HH形式に変換する仕組みで、任意のデータを安全にURL構成要素へ含められるようにする。 用語集
XSS
XSS(クロスサイトスクリプティング)は、攻撃者が悪意あるスクリプトをページに注入し、他のユーザーのブラウザで実行させる攻撃である。保存型、反射型、DOMベース型がある。 用語集
Unicode
Unicode は国際的な文字符号化標準で、世界中のほぼすべての文字体系の各文字に一意の符号位置(U+0000〜U+10FFFF)を割り当てる。符号空間は 1,114,112 点である。 用語集