0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
設定
HTMLエンティティをエンコード・デコードします。必須モードは、HTMLを壊す5つの文字だけをエンコードします:
& < > " '。拡張済みモードは、さらにすべての非ASCII文字をエンコードします。名前付きエンティティ(&)、10進数(&)、16進数(&)から選べます。仕組み
HTML 実体参照は、マークアップで特別な意味を持つ文字(< > & " ')や ASCII 以外の文字を、<、&、© のような並びで表します。こうすることで、ブラウザーはそれらをコードとして解釈せず、テキストとして表示します。
同等の形式が 3 つあります。名前付き(©)、10 進数(©)、16 進数(©)です。3 つとも同じ文字になります。名前付きは読みやすいものの、既知の集合にしか存在しません。
「必須」の範囲では HTML を壊す文字(& < > " ')だけをエスケープします。「すべて」の範囲では、さらに ASCII 以外のあらゆる文字もエスケープします。
例
<a href="#"><a href="#">エスケープすると、ブラウザーがタグを解釈するのを防ぎ、テキストとして表示します。5 < 10 & 3 > 15 < 10 & 3 > 1© 2024 · €© 2024 · €「すべて」の範囲かつ名前付き形式です。10 進数では © と €、16 進数では © と € になります。ユースケース
- HTML コードをページ上でレンダリングせずにテキストとして表示する(例、ドキュメント)。
- XSS を防ぐために、ユーザー入力を HTML に挿入する前にエスケープする。
- 特殊記号(©、€、→、½)を、エンコーディングをまたいで移植可能な形で挿入する。
- ページのソースコードからコピーした、実体参照を含むテキストをデコードする。
よくある質問
名前付き・10 進数・16 進数のどの形式が良いですか?
名前付き(©)が最も読みやすいものの、名前が定義された文字しかカバーしません。10 進数(©)と 16 進数(©)はあらゆる Unicode 文字に使えるため、珍しい記号には安全な選択肢です。
実体参照に符号化すると XSS 攻撃を防げますか?
重要な要素ですが、エスケープは文脈(HTML の内容、属性、JavaScript、URL)に応じて行う必要があります。単一の層に頼らず、フレームワークの保護も併用してください。
常にエスケープすべき文字はどれですか?
内容中の & < >、さらに属性値の中の " と '。「必須」の範囲はまさにこの集合をカバーします。
入力したテキストはサーバーに送信されますか?
いいえ。符号化と復号はすべてブラウザー内で行われます。