ブラウザ内ツール

エスケープ変換

同じテキストでも、埋め込む先によって「危険な文字」は変わります。 HTML なら < > &、JSON なら " \、 URL なら空白や &、シェルなら空白や引用符。 入力したテキストを4つの文脈へ一括でエスケープ/アンエスケープし、 必要な形をその場でコピーできます。送信はしません。

ブラウザ内処理・送信なし
元のテキスト
HTML
&lt;a href=&quot;/search?q=名前 &amp; 値&quot;&gt;it&#39;s a &quot;test&quot;&lt;/a&gt;

< > & " ' を実体参照に。XSS対策で本文・属性値に埋める前の処理。

JSON文字列
<a href=\"/search?q=名前 & 値\">it's a \"test\"</a>

" \ 改行 タブ などを \" \n 等に。JSONの値に文字列を入れる形。

URL
%3Ca%20href%3D%22%2Fsearch%3Fq%3D%E5%90%8D%E5%89%8D%20%26%20%E5%80%A4%22%3Eit's%20a%20%22test%22%3C%2Fa%3E

encodeURIComponent 相当。クエリ文字列やパスに値を載せる前の処理。

シェル
'<a href="/search?q=名前 & 値">it'\''s a "test"</a>'

単一引用符で囲み POSIX シェルに安全に渡す形。空白や記号の事故を防ぐ。

どの文脈でエスケープするか

エスケープは「出力する直前に、その出力先に合わせて」行うのが原則です。 入力時にまとめてエスケープすると、HTML用の &lt; がそのまま DB に保存され、 別の場所で二重エスケープになる、といった事故が起きます。

  • HTML: ユーザー入力を画面に出す前に。これを怠るとXSS(スクリプト注入)の入口になる。属性値なら " のエスケープも必須。
  • JSON文字列: 文字列を手組みするとき。実務では JSON.stringify に任せるのが安全で、このツールはその結果を確認する用途。
  • URL: クエリやパスに値を載せるとき。& = ? 空白 が構造を壊すのを防ぐ。
  • シェル: コマンドに変数を渡すとき。単一引用符で囲むのが最も安全で、値の中の ' だけ特別扱いすればよい。