クロスサイトスクリプティング (Cross Site Scripting) とは、動的に
Webページを生成するアプリケーションの
セキュリティ上の不備を意図的に利用し、狭義にはサイト間を横断して悪意のある
スクリプトを混入させること。また、それを許す
脆弱性のこと。広義には
スクリプトを混入させずとも、任意の要素を混入させられうる
脆弱性を含む。略記として
CSS、
XSSがある。
CSSは同分野でよく使用されるCascading Style Sheetsの略でもあるので、混乱を避けるために
XSSと表記されることが多い。
攻撃者が対象となるサイトとは異なるサイトから
スクリプトを送り込み、訪問者に実
行せしめることから、クロスサイト(サイトを横断した)スクリプティング(
スクリプト処理)と呼ばれる。
ウェブアプリケーションが入力したデータ(フォーム入力など)を適切にエスケープしないまま
HTML中に出力することにより、入力中に存在する
タグ等文字がそのまま
HTMLとして解釈される。ここで
スクリプトを
起動させることにより、以下に挙げるような攻撃が成立する。
- クッキーの値を取得あるいは設定することにより、セッションハイジャックする
- 強制的なページ遷移を起こさせ、クロスサイトリクエストフォージェリ対策を回避する(取得したクッキーを攻撃者側でそのまま利用できない場合に用いられる手法)
- ページ全体を置き換えることにより、偽のページを作り出す(典型的にはフィッシングに用いられる)
- フォームの送信先を置換することにより、入力を第三者サイトに送信するよう仕向ける
これらの攻撃が成立することにより、秘密情報の窃取や、回復不可能な権利侵害につながるおそれがある。