HTMLエンコーダー/デコーダー
< を <、& を & に変換し、ユーザー入力を安全に表示します。検索インデックス向けに、保存したHTML断片をプレーンテキストに戻すときエンティティを復号します。テンプレートとCMSのデバッグ向けにローカル動作。
HTMLの符号化または復号方法
1. 符号化(エスケープ)または復号モードを選びます。
2. HTMLまたはプレーンテキストを貼ります。
3. テンプレートまたは属性向けにエスケープ出力をコピーします。
4. エンティティが多いXML/HTML書き出しを読むために復号します。
HTMLエンティティの例
ユーザーコメントの安全な表示
入力 <script>alert(1)</script> は、テキストノード経由のinnerHTML安全な挿入向けに符号化すると無害なテキストになります。
属性内のアポストロフィ
title属性の O'Reilly は文脈次第で引用を ' または ' に符号化します。
CMS書き出しの復号
商品説明の & copy; は編集向けに & に復号されます。
HTMLを符号化するとき
• 信頼できないテキストをHTMLテンプレートに挿入するとき。
• メールテンプレートの二重符号化をデバッグするとき。
• Markdown生成のHTML断片を準備するとき。
文脈が重要
属性値向けのHTMLエスケープはテキストノードと違うことがあります——属性では引用が重要です。OWASPチートシートはJSとCSSの文脈も列挙します。
よくある質問
名前付きエンティティと数値エンティティは?
& 対 & ——よくある文字では同等。絵文字は 😀 の数値が必要なことがあります。
HTML文書全体を符号化しますか?
文書全体の符号化はリテラルタグを示します——通常はユーザーデータだけ符号化します。
XSS防止は?
テキストノードの符号化は助けになります。生のユーザーHTMLを連結しないでください。CSPヘッダーが防御を足します。
UTF-8文字は?
現代のHTML5ではUTF-8のまま残すことが多いです。非ASCIIのエンティティは任意です。
ローカルですか?
はい。