入力フォームに入れられた文字列をHTMLに組み込みたい、 例えば名前を入れると次ページで「〇〇さん、いらっしゃい」と表示したい時、 何も対策されていないと任意のJavascriptコマンドが実行されてしまう。
要するに、入力フォームに
<script>alert('こんにちは');</script>
と書けば、次ページのHTML文内にこのスクリプトが組み込まれることになり、
「こんにちは」とダイアログが表示できてしまう。
悪意のある人間がやれば、別サイトに誘導したり、Cookieを盗み取ることも可能である。
この脆弱性をクロスサイトスクリプティングと呼ぶ。対策として以下に2つの方法を挙げる。
- スクリプトに含まれる記号を受け付けない
名前に”<“や”&”といった記号は使われないので、これらの文字が含まれるとき、
受け付けないようにすればスクリプトの実行を防げる。
2. サニタイジング(無害化)を行う
スクリプトに含まれる”<“などの記号が含まれていた場合、HTML文内で以下のように文字を置き換えることで
スクリプトが成立しなくなり、実行を防げる。 ブラウザ上での表示は問題なく行われる。
<→(and)lt;
>→(and)gt;
&→(and)amp;
(and)は&に置き換えて読む