HTMLエンティティ変換ツール|エンコード・デコード
HTMLエンティティをエンコード・デコードします。&<>などの変換に。
HTMLエンティティ変換ツール|エンコード・デコードとは
HTMLエンティティのエンコード・デコードを行う無料ツールです。<>&"'などの特殊文字をHTMLエンティティに変換(エスケープ)、またはエンティティを元の文字に戻します(アンエスケープ)。XSS対策のHTMLエスケープ確認・Webスクレイピングのデコード・HTMLコンテンツのサニタイズ検証に最適。登録不要で即利用可能。
使い方
- 1変換したいテキストを入力エリアに貼り付けてください。
- 2エンコード(特殊文字→HTMLエンティティ)かデコード(HTMLエンティティ→特殊文字)を切り替えてください。
- 3リアルタイムで変換結果が表示されます。コピーボタンで結果をクリップボードにコピーできます。
- 4エンコード結果はHTMLのcontent属性・innerHTML・サーバーサイドレンダリングでの出力に活用できます。
メリット・特徴
- HTMLエンティティのエンコード・デコードを双方向でリアルタイム変換
- XSS対策に必須のHTMLエスケープ処理(<>&"')を正確に実行
- &#数値; 形式の数値参照および&名前; 形式の名前付きエンティティの両方に対応
- Webスクレイピングで取得したHTMLテキストのデコードに活用
- HTMLコンテンツのサニタイズ確認・セキュリティレビューに最適
- 登録・インストール不要。ブラウザで即利用できる完全無料ツール
HTMLエンティティの基本知識
なぜHTMLエンティティが必要なのか
HTMLでは<・>・&の3文字がHTMLタグや特殊記号として特別な意味を持ちます。これらの文字をHTMLコンテンツとして表示したい場合、そのまま書くとブラウザがHTMLタグや参照として解釈してしまいます。例えば「2 < 3」というテキストをHTMLに書く場合、「2 < 3」と書く必要があります。また"(ダブルクォート)は属性値の区切りに使われるため、属性値内では"にエスケープが必要です。HTMLエンティティはこれらの問題を解決する標準的な手段です。XSS(クロスサイトスクリプティング)攻撃の多くは、ユーザー入力をエスケープせずHTMLに出力することで発生するため、セキュリティの観点からも理解が不可欠です。
名前付きエンティティと数値参照
HTMLエンティティには「名前付きエンティティ」と「数値参照」の2種類があります。名前付きエンティティは&名前;の形式で、<(<)・>(>)・&(&)・"(")・©(©)・®(®)・™(™)・ (ノーブレークスペース)・…(…)などがあります。数値参照は&#番号;または進数;の形式で、あらゆるUnicode文字をHTMLに埋め込めます。例えば©は©とも書けます。現代のHTMLはUTF-8エンコードを標準とするため、日本語など通常のUnicode文字はエンティティに変換せずそのまま書けます。エンティティが必要なのは&・<・>・"・'の特殊な意味を持つ文字だけです。
XSS対策とHTMLエスケープの実践
XSS攻撃とHTMLエスケープの重要性
XSS(Cross-Site Scripting)はWebアプリケーションの脆弱性で、攻撃者がHTMLに悪意のあるJavaScriptを埋め込み、被害者のブラウザで実行させる攻撃です。典型的な手口は、ユーザー入力(検索キーワード・コメント・プロフィール情報など)をエスケープせずHTMLに出力することです。例えば検索キーワードとして「<script>alert('XSS')</script>」が入力された場合、エスケープなしで出力するとJavaScriptが実行されます。HTMLエスケープを実施することで<は<として表示されるだけになり、スクリプト実行を防止できます。OWASP(Open Web Application Security Project)はXSS防止の第一手段としてHTMLエスケープを推奨しています。
各言語・フレームワークでのXSS対策
HTMLエスケープの実装は使用する言語・フレームワークによって異なります。PHPではhtmlspecialchars($input, ENT_QUOTES | ENT_HTML5, 'UTF-8')が基本です。ENT_QUOTESを指定することでシングルクォートもエスケープされます。JavaScriptではDOM操作でelement.textContent = inputを使うと自動エスケープされます。innerHTMLを使う場合は手動でエスケープが必要です。React・Vue・Angularなどのモダンフロントエンドフレームワークは、テンプレート内の変数をデフォルトでエスケープするため、dangerouslySetInnerHTML(React)やv-html(Vue)を意図的に使わない限りXSSが防止されます。本ツールを使ってエスケープ処理の動作を確認し、セキュリティレビューに活用してください。
よくある質問(FAQ)
- HTMLエンティティとは何ですか?
- HTMLで特別な意味を持つ文字(<>& など)をHTMLに安全に表示するための表記法です。例えば < は <、> は >、& は &、" は "、' は ' と表記します。HTMLエンティティを使うことで、これらの文字が誤ってHTMLタグとして解釈されるのを防ぎます。
- &と&の違いは?
- &は名前付きエンティティ(Named Character Reference)、&は数値参照(Numeric Character Reference)です。どちらも&記号を表し、ブラウザでの表示結果は同じです。本ツールはエンコード時に名前付きエンティティ形式で出力し、デコード時は両形式に対応しています。
- 全角文字・日本語はエンコードされますか?
- 日本語などのUnicode文字はそのまま出力されます。HTMLで特別な意味を持つ5文字(& < > " ')のみがエンティティにエンコードされます。現代のHTMLはUTF-8を前提としているため、日本語をエンティティに変換する必要はありません。
- XSS攻撃を防ぐためにどの文字をエスケープすべきですか?
- HTMLコンテキストでは最低限「& < > " '」の5文字をエスケープする必要があります(&→&、<→<、>→>、"→"、'→')。Webアプリでユーザー入力をHTMLに出力する際は、必ずこれらの文字をエスケープしてXSS(クロスサイトスクリプティング)を防止してください。
- WebスクレイピングでHTMLエンティティをデコードしたい場合は?
- Webスクレイピングで取得したHTMLにはエンティティが含まれていることがあります。例えば「&amp;」「<p>」などです。本ツールのデコード機能でこれらを元のテキストに変換できます。Pythonではhtml.unescape()、JavaScriptではDOMParserを使ったデコードも可能です。
- PHP・JavaScriptでHTMLエスケープするには?
- PHPではhtmlspecialchars($str, ENT_QUOTES, 'UTF-8')を使います。JavaScriptではelement.textContent = strを使うとDOMが自動的にエスケープします。Reactなどのフレームワークはデフォルトでレンダリング時にエスケープするため、dangerouslySetInnerHTMLを使わない限りXSSが防止されます。
不具合や動作がおかしい点を見つけたら教えてください。
不具合報告はこちら →