HTMLエンティティ
HTML特殊文字とエンティティをエンコードおよびデコード
使用例
- ユーザーコンテンツを安全なHTMLにエスケープ — テンプレートに挿入する前に`<script>`を`<script>`に変換します。
- 生のHTMLメールソースを読む — `&`や`☃`をデコードして、受信者が実際に見るものを確認します。
- CMS安全なスニペットを構築 — データベース列がSQLやHTMLコンテキストを壊さないように、`'`や`"`をエンコードします。
- XSSレポートをデバッグ — 疑わしい入力をエスケープ解除して、元のペイロードを復元します。
HTMLエンティティエンコーディングが必要な場合は?
ユーザー提供のテキストがHTMLにレンダリングされるとき、`<`や`>`のような文字はタグとして解釈されないように`<`や`>`としてエスケープする必要があります。これをスキップすると、XSS脆弱性の根本原因になります。このツールは、5つのコアHTML非安全文字と、エスケープするUnicodeをエンコードします。
数値エンティティ(`&`, `&`)は任意のHTMLコンテキストで機能します。名前付きエンティティ(`&`, `©`)は読みやすいですが、HTMLでのみ機能します — XMLパーサーはすべてのHTML名を知りません。
例
| 入力 | 結果 |
|---|---|
| <script>alert('hi')</script> | <script>alert('hi')</script> |
| © 2024 — Wenee | © 2024 — Wenee |
よくある質問
どの文字をエンコードする必要がありますか?
最低限: `<`, `>`, `&`, `"`, および `'`。もっとエンコードする(すべての非ASCIIなど)ことは無害ですが、出力が膨らみます。
名前付きエンティティと数値エンティティはどちらが良いですか?
名前付き(`&`)はHTMLでより読みやすいです; 数値(`&`)はHTMLとXMLの両方で機能します。クロスフォーマットの安全性のために数値を選択してください。
HTMLエンティティエンコーディングはURLエンコーディングと同じですか?
いいえ — HTMLエンティティはHTMLコンテキスト用に`&...;`構文を使用します。URLエンコーディングはURLコンテキスト用に`%XX`を使用します。異なるレイヤーに役立ちます。
これでXSSを防げますか?
HTML出力内のテキストコンテンツをエンコードすることで、最も一般的なXSSベクトルを防ぎます。他のコンテキスト(属性値、JavaScript文字列、CSS)にはそれぞれのエスケープルールが必要です。
私のテキストはどこかに送信されますか?
いいえ。エンコードとデコードは完全にブラウザ内で行われます。
