HTMLエスケープとは
HTMLでは < や > がタグの開始・終了として解釈されます。これらの文字をそのまま文字として表示したいときは、文字実体参照に置き換える必要があります。この置き換えを HTML エスケープと呼びます。
| 文字 | 実体参照 | 数値参照 |
|---|---|---|
& | & | & |
< | < | < |
> | > | > |
" | " | " |
' | ' | ' |
どんなときに使う?
- ブログや技術記事に HTML / XML のソースコードを掲載するとき
- メールテンプレートや CMS で記号が崩れるとき
- XSS(クロスサイトスクリプティング)対策として、ユーザー入力が正しくエスケープされているか確認するとき
- スクレイピングで取得した
&だらけのテキストを読める形に戻すとき
アンエスケープの対応範囲
アンエスケープは © などの名前付き実体参照、あ のような10進数値参照、あ のような16進数値参照のすべてに対応しています。
よくある質問
シングルクォートはなぜ ' なのですか?
' は HTML4 で定義されておらず、古いブラウザで表示されないことがあるため、互換性の高い数値参照 ' を使っています。
エスケープだけでXSS対策は十分ですか?
HTML本文や属性値の中ではエスケープが基本の対策です。ただし href 属性の javascript: スキームや、<script> 内への出力などは別の対策が必要です。