HTMLエンティティ

HTML特殊文字とエンティティをエンコードおよびデコード

使用例

  • ユーザーコンテンツを安全なHTMLにエスケープ — テンプレートに挿入する前に`<script>`を`&lt;script&gt;`に変換します。
  • 生のHTMLメールソースを読む — `&amp;`や`&#x2603;`をデコードして、受信者が実際に見るものを確認します。
  • CMS安全なスニペットを構築 — データベース列がSQLやHTMLコンテキストを壊さないように、`'`や`"`をエンコードします。
  • XSSレポートをデバッグ — 疑わしい入力をエスケープ解除して、元のペイロードを復元します。

HTMLエンティティエンコーディングが必要な場合は?

ユーザー提供のテキストがHTMLにレンダリングされるとき、`<`や`>`のような文字はタグとして解釈されないように`&lt;`や`&gt;`としてエスケープする必要があります。これをスキップすると、XSS脆弱性の根本原因になります。このツールは、5つのコアHTML非安全文字と、エスケープするUnicodeをエンコードします。

数値エンティティ(`&#38;`, `&#x26;`)は任意のHTMLコンテキストで機能します。名前付きエンティティ(`&amp;`, `&copy;`)は読みやすいですが、HTMLでのみ機能します — XMLパーサーはすべてのHTML名を知りません。

入力結果
<script>alert('hi')</script>&lt;script&gt;alert(&#39;hi&#39;)&lt;/script&gt;
© 2024 — Wenee&copy; 2024 &mdash; Wenee

よくある質問

どの文字をエンコードする必要がありますか?

最低限: `<`, `>`, `&`, `"`, および `'`。もっとエンコードする(すべての非ASCIIなど)ことは無害ですが、出力が膨らみます。

名前付きエンティティと数値エンティティはどちらが良いですか?

名前付き(`&amp;`)はHTMLでより読みやすいです; 数値(`&#38;`)はHTMLとXMLの両方で機能します。クロスフォーマットの安全性のために数値を選択してください。

HTMLエンティティエンコーディングはURLエンコーディングと同じですか?

いいえ — HTMLエンティティはHTMLコンテキスト用に`&...;`構文を使用します。URLエンコーディングはURLコンテキスト用に`%XX`を使用します。異なるレイヤーに役立ちます。

これでXSSを防げますか?

HTML出力内のテキストコンテンツをエンコードすることで、最も一般的なXSSベクトルを防ぎます。他のコンテキスト(属性値、JavaScript文字列、CSS)にはそれぞれのエスケープルールが必要です。

私のテキストはどこかに送信されますか?

いいえ。エンコードとデコードは完全にブラウザ内で行われます。