レッスン 1
HTML エンティティとは何か
文字参照と、HTML がエスケープを必要とする理由を理解します。
HTML エンティティ(より正確には 文字参照)は、リテラル文字の代わりにエスケープ列で文字を書く方法です。最も馴染みのある形式は & で始まり ; で終わり、< が <、© が © など。
HTML がエスケープを必要とする理由
HTML は < と > でタグを区切ります。エスケープなしで生の <script> をページに挿入すると、ブラウザがマークアップとして解釈する可能性があります。エスケープは < を < にし、タグを開始せず文字を表示します。
同じ考えが次にも当てはまります。
- アンパサンド(
&)—©が誤って解析されないよう最初にエスケープ - 属性内の引用符 — 属性値内の
"と' - 特殊記号 — ©、ノンブレークスペース、コンテンツ内の数学記号
エンティティは暗号化ではない
エンコードは意味を隠しません。誰でも Tom & Jerry を Tom & Jerry にデコードできます。目的は HTML への安全な挿入 であり、機密性ではありません。
開発者がエンティティを見る場所
一般的な出所:
- 保存やメールテンプレート向けに HTML をエスケープする CMS エクスポート
- 出力を自動エスケープするサーバー側テンプレートエンジン
- 事前エスケープされたスニペットを含む JSON やログフィールド
- Word やリッチテキストエディタからのスマートクォートと記号付きコピペ
デコード vs レンダリング
エンティティ文字列をデコードすると テキスト が得られます。そのテキストを HTML 内でレンダリングするのは別ステップです。デコードだけで innerHTML に安全とは限りません。