HTMLエスケープ・アンエスケープ
HTML特殊文字のエスケープ・アンエスケープをリアルタイムで変換
0 文字
0 文字
変換対応表
本ツールでエスケープ・アンエスケープされる文字の一覧
| 文字 | Named Entity | 数値参照(10進) | 数値参照(16進) | 説明 |
|---|---|---|---|---|
& | & | & | & | アンパサンド |
< | < | < | < | 小なり(開始タグ) |
> | > | > | > | 大なり(終了タグ) |
" | " | " | " | ダブルクォート |
' | ' | ' | ' | シングルクォート |
データはサーバーに送信されません。すべてブラウザ上で処理されます。
HTMLエスケープとは?
HTMLエスケープとは、HTMLで特別な意味を持つ文字を「文字参照」に変換する処理です。
HTMLでは < や > がタグの開始・終了に、& が文字参照の開始に使われるため、
これらの文字をそのままテキストとして表示するには、対応する文字参照に変換する必要があります。
エスケープが必要な5つの特殊文字
HTMLで最低限エスケープが必要な特殊文字は以下の5つです。
&(アンパサンド) →&— 文字参照の開始文字であるため、最も重要なエスケープ対象です<(小なり) →<— HTMLタグの開始として解釈されるのを防ぎます>(大なり) →>— HTMLタグの終了として解釈されるのを防ぎます"(ダブルクォート) →"— HTML属性値内で使用する場合に必要です'(シングルクォート) →'— HTML属性値内で使用する場合に必要です
XSS(クロスサイトスクリプティング)対策としてのエスケープ
HTMLエスケープは、XSS攻撃を防ぐ最も基本的な対策です。
ユーザーが入力したデータをWebページに表示する際、エスケープ処理を行わないと、
攻撃者が <script> タグなどの悪意あるHTMLコードを注入できてしまいます。
サーバーサイドのテンプレートエンジン(React、Vue、Jinja2、ERBなど)は通常、
自動でHTMLエスケープを行いますが、dangerouslySetInnerHTML や v-html など
「生のHTMLを挿入する」機能を使う場合は手動でのエスケープが必要です。
Named entities vs 数値参照
文字参照には「Named entities(名前付き実体参照)」と「数値参照」の2種類があります。
& のような名前付きの方が読みやすく、& のような数値参照はすべてのUnicode文字を表現できます。
ブラウザはどちらも同じように解釈するため、一般的なHTMLではNamed entitiesが推奨されます。
プログラミング言語別のエスケープ関数
- JavaScript — 標準の関数はなし。自前で実装するか、ライブラリ(he、lodash.escapeなど)を使用
- Python —
html.escape()(標準ライブラリ) - PHP —
htmlspecialchars() - Ruby —
CGI.escapeHTML()またはERB::Util.html_escape() - Java —
StringEscapeUtils.escapeHtml4()(Apache Commons Text) - Go —
html.EscapeString()(標準ライブラリ)