参考: https://www.ipa.go.jp/security/vuln/websecurity/cross-site-scripting.html
概要
- 通常、Webアプリケーションには外部からの入力(ユーザーの入力内容や操作内容)に対して表示が変化する箇所がある(動的なWebページ)
- e.g. 入力フォームの確認画面, カートの内容, 新規ユーザーの登録画面
- この部分のHTML生成の実装に問題があると、
クロスサイト・スクリプティングという脆弱性が発生する - XSSとは、攻撃者が不正なスクリプトを攻撃対象のHTMLに挿入して、ユーザーに不正リクエストを実行させる攻撃手法
- 悪意を持った攻撃者が直接、ユーザーのブラウザ(PC)を攻撃するのではない点がポイント
XSSの影響の例
- クッキー値の盗み出し
- e.g. サイト利用者のブラウザ上で、攻撃者の用意したスクリプトの実行によりクッキー値を盗まれ、利用者がなりすましの被害に遭う
- その他のJavaScriptによる攻撃
- e.g. ブラウザ上でスクリプトを実行させられ、サイト利用者の権限でWebアプリケーションの機能を悪用される
- 画面の書き換え
- e.g. Webサイト上に偽の入力フォームが表示され、フィッシングにより利用者が個人情報を盗まれる
XSSの流れ
- メール、SNS、掲示板などを通じて罠リンクを送信
- 罠リンクをクリック
- スクリプトを埋め込んだWebページを返送
- クライアントのブラウザ上でスクリプトを実行
- クッキー流出、個人情報漏洩… など
対策
- WAFでブロック
- AkamaiにもXSSブロックの項目はある
- 表示の際に、HTMLで特殊な意味を持つ記号文字(メタ文字)をエスケープする
- 表示されてもブラウザ上で実行されないようにする