クロスサイトスクリプティング(XSS)の対策

入力フォームに入れられた文字列をHTMLに組み込みたい、 例えば名前を入れると次ページで「〇〇さん、いらっしゃい」と表示したい時、 何も対策されていないと任意のJavascriptコマンドが実行されてしまう。

要するに、入力フォームに

<script>alert('こんにちは');</script>

と書けば、次ページのHTML文内にこのスクリプトが組み込まれることになり、 「こんにちは」とダイアログが表示できてしまう。 悪意のある人間がやれば、別サイトに誘導したり、Cookieを盗み取ることも可能である。 この脆弱性をクロスサイトスクリプティングと呼ぶ。対策として以下に2つの方法を挙げる。

  1. スクリプトに含まれる記号を受け付けない 名前に”<“や”&”といった記号は使われないので、これらの文字が含まれるとき、 受け付けないようにすればスクリプトの実行を防げる。

2. サニタイジング(無害化)を行う スクリプトに含まれる”<“などの記号が含まれていた場合、HTML文内で以下のように文字を置き換えることで スクリプトが成立しなくなり、実行を防げる。 ブラウザ上での表示は問題なく行われる。
 <→(and)lt;
 >→(and)gt;
 &→(and)amp;
(and)は&に置き換えて読む