コンテンツへスキップ
uencoder

HTML Entities

HTML エンティティは、HTML で特別な意味を持つ文字(<、>、&、")を &name; や &#NNN; の形式にエスケープし、マークアップとして解釈されず文字どおり表示させる。

目的

ユーザー入力や動的コンテンツがブラウザに HTML タグとして実行されるのを防ぐ。XSS 対策の基礎となる防御である。

メカニズム

&lt; &gt; &amp; &quot; &apos; などの名前付きエンティティが XML で定義済みの 5 文字をカバーする。数値エンティティ &#NNN; は 10 進コードポイント、&#xNNN; は 16 進コードポイントを使う。デコードは DTD のエンティティ表に従って展開する。

ユースケース

  • HTML 内で < > & をテキストとして表示
  • XSS 対策の出力エスケープ
  • HTML メールでの特殊記号
  • XML コンテンツのエスケープ

例

  • 入力
    <script>
    Output
    &lt;script&gt;

    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 '

関連用語

関連ツール

References