【えすけーぷしょり】

エスケープ処理 とは?

💡 特殊文字を無害化して、攻撃の入り口を塞ぐ
📌 このページのポイント
エスケープ処理(XSS対策の例) エスケープなし(危険) <script>alert()</script> 悪意ある入力 そのまま HTMLに埋め込み → スクリプト実行! XSS攻撃成功 情報漏洩の危険 エスケープあり(安全) <script>alert()</script> 悪意ある入力 変換! &lt;script&gt;... 無害な文字列に変換 安全に表示 テキスト扱い 主なエスケープ変換 < → &lt; > → &gt; & → &amp; " → &quot;
エスケープ処理のイメージ
ひよこ ひよこ

エスケープ処理って何をエスケープするの?

ペンギン先生 ペンギン先生

プログラムにとって特別な意味を持つ文字を、ただの文字として扱えるように変換することだよ。たとえばHTMLで <script> って書くと、ブラウザはそれをJavaScriptのコードとして実行しちゃう。でも &lt;script&gt; に変換すれば、画面にただの文字列として表示されるんだ。

ひよこ ひよこ

それをしないとどうなるの?

ペンギン先生 ペンギン先生

たとえば掲示板の名前欄に <script>alert('乗っ取り')</script> って入力されたとする。エスケープ処理をしていないと、その掲示板を見た全員のブラウザでこのスクリプトが動いちゃう。これがXSS攻撃で、Cookieを盗まれたりする危険があるんだよ。

ひよこ ひよこ

SQLにもエスケープが必要なの?

ペンギン先生 ペンギン先生

そうだよ。ログインフォームのパスワード欄に ' OR '1'='1 って入力されたとき、エスケープしていないとSQL文が書き換えられて、パスワードなしでログインできちゃうことがある。これがSQLインジェクションだね。今はプリペアドステートメントという仕組みで自動的に安全に処理するのが主流だよ。

ひよこ ひよこ

毎回手動でエスケープするのは大変そう...

ペンギン先生 ペンギン先生

だから今のフレームワークは自動エスケープ機能を持っているものがほとんどだよ。ReactならJSXが自動でHTMLエスケープしてくれるし、データベースアクセスもORMが安全に処理してくれる。ただし、自動エスケープを意図的にオフにする機能(ReactのdangerouslySetInnerHTMLとか)を使うときは要注意だね。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
エスケープ処理は特殊文字を安全な表現に変換することで、SQLインジェクションXSSといった攻撃を防ぐセキュリティの基本技術。HTMLなら < を < に、SQLならシングルクォートをエスケープするなど、文脈に応じた適切な処理が必要。フレームワークの自動エスケープ機能を活用しつつ、バリデーションサニタイズと組み合わせた多層防御が重要。
📖 おまけ:英語の意味
「escape」 = 逃がす・回避する
💬 特殊文字の持つ意味から『逃がす(無効化する)』ことが語源
← 用語集にもどる