JavaScriptやHTMLタグなどのスクリプトを悪用するとともに、偽物と本物の二つのサイトをまたいだ攻撃。あるWebサイトにユーザーを誘導し、悪意あるスクリプトをクリックさせ、本来の目的であるサイト上で不正行為を行い、その結果、ユーザーに被害を与える。
攻撃側は、攻撃のための罠(わな)Webページ(または罠HTMLメール)を用意し、被害者にそのページ(またはリンクURL)をクリックさせる。すると正規のWebサイトが表示されるが、クリックしたことにより不正なスクリプトを含む文字列が送信され、これがWebアプリケーションに作用してしまう。すると、ユーザーのブラウザでスクリプトが実行されたり、Webページを出力する際に偽ページを表示させたりする。さらには、Cookie情報などが攻撃者の手に渡ることもある。
XSSの仕組み
つまり被害は、Webサイトに対してではなく、ページを閲覧しているユーザーに及ぶ。
Webアプリケーションの中には、掲示板や個人情報登録時の確認画面など、ユーザーが入力した内容をそのままWebページとして出力するものがある。こうした「エコーバック」の内容をアプリケーション側が適切に制御しない場合、セキュリティの不備が発生する。攻撃者はあたかもユーザーが入力したかのように見せかけて不正なスクリプトを入力内容に紛れ込ませ、目的を達成することができるようになる。
対策
基本的には、画面に出力される文字列をエスケープすることで対策が可能である。
しかし実際は、出力される状況に応じて対策の仕方を細かく変えていく必要があり、それぞれのケースに応じた対策が求められる。
詳しい対策方法については、情報処理推進機構(IPA)の「安全なWebサイトの作り方」などを参考にして、万全な対策を行うことを推奨する。