HTMLエンティティとは

HTMLエンティティは、HTMLの構文として特別な意味を持つ文字や、キーボードで入力しにくい文字を表現するための記法です。&名前;または&#数値;の形式で記述します。

必須のエスケープ文字

  • &lt;:<(HTMLタグの開始と混同されるため必須)
  • &gt;:>(HTMLタグの終了)
  • &amp;:&(エンティティ記号自体)
  • &quot;:"(属性値内のダブルクォート)
  • &apos;:'(属性値内のシングルクォート)

よく使う特殊文字

  • &nbsp;:ノーブレークスペース(改行されないスペース)
  • &copy;:© 著作権マーク
  • &reg;:® 登録商標マーク
  • &trade;:™ 商標マーク
  • &mdash;:— 全角ダッシュ
  • &hellip;:… 省略記号

XSS対策としてのエスケープ

ユーザーが入力したテキストをHTMLに埋め込む場合、エスケープ処理を怠るとXSS(クロスサイトスクリプティング)攻撃を受けます。攻撃者が<script>悪意のあるコード</script>を入力すると、他のユーザーのブラウザで実行されてしまいます。

ReactやVueなどのモダンフレームワークはデフォルトでエスケープ処理を行いますが、dangerouslySetInnerHTMLv-htmlを使う場合は特に注意が必要です。