HTMLエンティティのエンコード・デコード
<、>、&や引用符などの特殊文字をHTMLエンティティに相互変換します。すべての処理はブラウザ内で完結します。
HTMLエンティティ
0文字
使い方
HTMLエンティティとは、ブラウザがマークアップとして解釈してしまう<や&などの文字の代わりに使われる短いコードです。これにより、特殊文字がHTMLタグとして読み取られるのを防ぎます。
- テキストを貼り付けてください。
プレーンテキスト欄に入力すると、エンティティ欄も自動的に更新されます。
- エンコード範囲の選択
トグルをオフにすると5つの特殊文字のみをエンコードし、オンにすると非ASCII文字も含めてすべてエンコードします。
- 結果をコピーしてください。
または、エンティティ欄を直接編集して「デコード」をクリックすると、プレーンテキストに戻せます。
主なHTMLエンティティ
| 文字 | エンティティ名 | エンティティ番号 |
|---|---|---|
| < | < | < |
| > | > | > |
| & | & | & |
| " | " | " |
| ' | ' | ' |
| © | © | © |
| ® | ® | ® |
| (改行しないスペース) | |   |
エンティティエンコーディングとXSS
エンティティエンコーディングはクロスサイトスクリプティングに対する重要な防御策ですが、それ単独では完全な対策にはなりません。HTML要素の本文内に配置されたテキストに対しては正しく機能しますが、JavaScript文字列、HTML属性、CSS、URLパラメータ内に配置されたユーザー入力には、コンテキストに応じた異なるエスケープ処理が必要です。単一のエンコーディング処理に頼るのではなく、常にセキュリティに重点を置いたライブラリやフレームワークを使用してください。
名前付きエンティティと数値参照
名前付きエンティティは、&に対する&のように読みやすい識別子を使用します。数値参照は代わりに10進数(&)または16進数(&)のUnicodeコードポイントを使用します。名前付きエンティティは定義された文字セットのみをカバーしますが、数値参照は任意のUnicode文字を表すことができ、上記の「すべての非ASCII文字をエンコード」オプションでもこれが使用されています。
データがデバイスの外に出ることはありません
エンコードとデコードの両方は、JavaScriptとDOMを使用してブラウザ内で完全に実行されます。テキストは一切サーバーに送信されないため、機密性の高いコンテンツ、HTMLに埋め込まれた認証トークン、内部アプリケーションのマークアップを安全に貼り付けることができます。
よくある質問
XSSを防ぐために特殊文字をHTMLエンティティとしてエンコードするにはどうすればよいですか?
プレーンテキストボックスに生のテキストを入力または貼り付けてください。入力すると、<、>、&、"、'の5つの特殊文字がそれぞれ対応するHTMLエンティティに置き換えられます。<は<に、>は>に、&は&に、"は"に、'は'になります。このエンコーディングにより、ブラウザがテキストをマークアップとして解釈することを防げます。
HTMLエンティティエンコードはXSS対策として完全ですか?
エンティティエンコードは重要な防御策ですが、それ単体では十分ではありません。HTMLコンテンツのコンテキストや要素内のテキストに対しては正しく機能しますが、JavaScript文字列、HTML属性、CSS、URLパラメータ内に配置されたユーザー入力には、異なるエスケープ戦略が必要です。常にコンテキストに応じた出力エンコーディングを適用し、単一のエンコード処理のみに依存するのではなく、セキュリティに重点を置いたライブラリやフレームワークを使用してください。
HTMLエンティティを読み取り可能なテキストにデコードするにはどうすればよいですか?
エンティティエンコードされたテキストをHTMLエンティティボックスに貼り付け、「プレーンテキストにデコード」をクリックしてください。このツールは、名前付きまたは数値の各エンティティを対応する文字に変換します。これは、HTMLソースからテキストを抽出したり、ログ内のエスケープされた文字列を読んだり、サーバー側の出力を検査したりする際に便利です。
HTMLエンティティのエンコードまたはデコード時に、テキストはサーバーに送信されますか?
いいえ。エンコードとデコードの両方は、JavaScriptとDOM操作を使用してブラウザ内で完全に実行されます。テキストは一切サーバーに送信されないため、機密性の高いコンテンツ、HTMLに埋め込まれた認証トークン、内部アプリケーションのマークアップなどを安全に貼り付けることができます。
名前付きHTMLエンティティと数値文字参照の違いは何ですか?
名前付きエンティティは、&で始まり;で終わる人間が読める識別子を使用します(例: &を表す&)。数値文字参照は10進数(&)または16進数(&)のUnicodeコードポイントを使用します。名前付きエンティティは定義されたセットに限定されますが、数値文字参照は任意のUnicode文字を表せます。どちらもHTML5として有効であり、ブラウザで同一の結果を生成します。
このツールは5つの基本特殊文字以外もエンコードできますか?
はい。「非ASCII文字もすべてエンコード」をオンにすると、印刷可能なASCII範囲外のすべての文字(アクセント付き文字、記号、絵文字を含む)が5つの特殊文字と同様に数値エンティティに変換されます。これは、プレーンなASCIIマークアップのみを受け付ける古いシステム向けにテキストを準備する際に便利です。