クロスサイトスクリプティング(XSS)は、Webサイトが入力された文字をそのまま画面に表示してしまう弱点を突き、そのサイトを見た利用者のブラウザで不正なスクリプトを動かす攻撃です。ログイン状態(セッション)を盗まれてなりすまされたり、本物のサイトの中に偽の入力欄を表示されたりします。
利用者に起きる被害
- ログイン状態を盗まれ、アカウントになりすまされる
- 本物のサイトのURLのまま、偽のログイン欄やカード入力欄が表示される
- 別のサイトへ勝手に移動させられる
開発側の対策
- 画面に出す文字は、HTMLとして解釈されないよう必ずエスケープ処理してから表示する
- URLを出力するときは「http://」「https://」で始まるものだけを許可する
- CookieにHttpOnly属性を付け、スクリプトから読めないようにする
- Content Security Policy(CSP)で、読み込めるスクリプトを制限する
- フレームワークの自動エスケープ機能を無効にしない
利用者ができること:XSSはサイト側の問題なので、利用者が完全に防ぐのは困難です。ブラウザを最新にし、ログイン後に普段と違う入力を求められたら入力しないことが身を守る基本です。