HTMLエンコーダー/デコーダー

< を &lt;、& を &amp; に変換し、ユーザー入力を安全に表示します。検索インデックス向けに、保存したHTML断片をプレーンテキストに戻すときエンティティを復号します。テンプレートとCMSのデバッグ向けにローカル動作。

HTMLの符号化または復号方法

1. 符号化(エスケープ)または復号モードを選びます。
2. HTMLまたはプレーンテキストを貼ります。
3. テンプレートまたは属性向けにエスケープ出力をコピーします。
4. エンティティが多いXML/HTML書き出しを読むために復号します。

HTMLエンティティの例

ユーザーコメントの安全な表示

入力 <script>alert(1)</script> は、テキストノード経由のinnerHTML安全な挿入向けに符号化すると無害なテキストになります。

属性内のアポストロフィ

title属性の O'Reilly は文脈次第で引用を &#39; または &apos; に符号化します。

CMS書き出しの復号

商品説明の &amp; copy; は編集向けに & に復号されます。

HTMLを符号化するとき

信頼できないテキストをHTMLテンプレートに挿入するとき。
メールテンプレートの二重符号化をデバッグするとき。
Markdown生成のHTML断片を準備するとき。

文脈が重要

属性値向けのHTMLエスケープはテキストノードと違うことがあります——属性では引用が重要です。OWASPチートシートはJSとCSSの文脈も列挙します。

よくある質問

名前付きエンティティと数値エンティティは?

&amp; 対 &#38; ——よくある文字では同等。絵文字は &#x1F600; の数値が必要なことがあります。

HTML文書全体を符号化しますか?

文書全体の符号化はリテラルタグを示します——通常はユーザーデータだけ符号化します。

XSS防止は?

テキストノードの符号化は助けになります。生のユーザーHTMLを連結しないでください。CSPヘッダーが防御を足します。

UTF-8文字は?

現代のHTML5ではUTF-8のまま残すことが多いです。非ASCIIのエンティティは任意です。

ローカルですか?

はい。