- クロスサイトスクリプティング(XSS)の概要情報をまとめる。
XSSとは
- ユーザーのアクセス時に表示内容が生成される動的なWebページの脆弱性、もしくはその脆弱性を利用した攻撃手法を指す。
- 動的なWebページが表示内容生成処理を行う際、Webページに悪意のあるスクリプトが仕掛けられ、Webサイトを閲覧したユーザ環境で紛れ込んだスクリプトが実行される。
XSS発生の流れ
悪意のあるスクリプトがもたらす被害
-
Cookie情報の抜き取り
- Cookieに含まれているセッション ID を抜き出し、利用者になりすますことで、個人情報を取得する(セッションハイジャック攻撃)。
-
Webページの改竄
- 改竄例
- ユーザーが入力するフォームの送信先を別の URL に書き換え、入力内容を別のサイトに送信させる。
- 無関係なコンテンツを埋め込み、本物と違和感のないデザインに仕立てることで、ユーザーをフィッシングサイト(罠サイト、不正サイト)へ誘導する。
- 改竄例
など
XSSへの注意が必要なWebアプリの特徴
- 基本はすべてのWebアプリで注意が必要になる。
- Cookieを利用してログインセッション管理を行う、フィッシング詐欺の攻撃ターゲットになりやすいページ(ログイン画面、個人情報の入力画面等)を持つようなアプリは、特に注意が必要になる。
- ユーザーの入力した文字列を Web ページ内に表示する部分で、入力内容のエスケープ/バリデーション処理を適切に行っていない実装をしている場合、非常に危険である。
対応手段
画面表示において
-
エスケープ(サニタイズ、サニタイジング)処理を行う。
- 特殊記号を純粋な文字列として扱う。
-
特定文字列のみ表示を許容する。
- 「http://」や 「https://」で始まるURLのみを表示する、など。
入力内容に対して
-
入力内容に対してバリデーション処理を行う。
- 特殊記号などをなるべく許容しないようにする。
- 入力されたHTMLテキストから、スクリプトに該当する文字列を排除する。
など