HTML エンティティ エンコード・デコード
`<script>` を `<script>` に変換して実行されないようにしたり、`&#8212;` を全角ダッシュに戻したりできます。実体参照・10 進参照・16 進参照のすべてに対応します。
通常は最小限のエスケープで十分
HTML で本当にエスケープが必要なのは `&` `<` `>` `"` `'` の 5 文字だけです。これらをエスケープすれば、どんな文字列もマークアップや属性値に安全に置けます。それ以外まで変換するのは、文字コードの宣言が信頼できなかった時代の名残で、ソースを読みにくくするだけです。
非 ASCII もエスケープすべき場面
古い CMS、メールテンプレート、charset ヘッダが不明なシステムなど、UTF-8 が壊れうる経路を通す場合は、完全エスケープにすれば文字が確実に届きます。`©` のような実体参照がある文字はそれを使い、なければ数値参照を使う設定も選べます。
システムが保存した内容を確認する
二重エスケープ(`&amp;`)はよくある不具合で、2 か所のコードが同じ文字列をエスケープした結果です。1 回デコードすると `&`、2 回で `&` になります。原因を確認したうえで、余分なエスケープ処理そのものを取り除いてください。
よくある質問
テキストは送信されますか?
いいえ。貼り付けた内容がブラウザの外に出ることはありません。ページは小さな JavaScript を読み込むだけで、計算はすべて手元の端末で行われます。送信先のサーバーそのものが存在しません。 エンコーダーもデコーダーも、DOM にもネットワークにも触れない小さな純粋関数です。
HTML エスケープで XSS を防げますか?
正しい文脈で正しい文字をエスケープすることが防御の中心ですが、文脈が重要です。テキスト、属性値、URL、インライン JavaScript ではそれぞれ扱いが異なります。文脈を理解しているフレームワークのエスケープ機能を使い、このツールは確認用と考えてください。
` ` が普通の空白に見えます
ノーブレークスペースで、見た目は同じですが改行を抑止する別の文字です。ワープロやリッチテキストエディタから紛れ込むことが多く、意図した位置で折り返さないレイアウト崩れの原因になります。
シングルクォートには `'` を使うべきですか?
`'` は HTML5 と XML では有効ですが、HTML 4 では定義されていなかったため、非常に古いパーサーは認識しないことがあります。`'` はどこでも安全です。古い環境を対象にするなら数値参照を使ってください。