×
サイバー攻撃について
  • Web開発を学び始めた人

  • Django、Flask、PHP、Java、Node.jsなどを使う開発者

  • JavaScript、TypeScript、React、Vue、Angularを使う開発者

  • WebSocketやSPAを実装している人

  • CMS、チャット、管理画面、SOC画面を運用している人

  • 脆弱性診断やセキュリティレビューを担当する人

コード例は、主にHTML、JavaScript、Djangoを使用します。

攻撃用の外部送信コードやCookie窃取コードは掲載しません。安全な確認用文字列を使って説明します。


用語と全体像

XSSとは

XSSとは、信頼できないデータが、ブラウザーによってHTMLやJavaScriptなどの実行可能な内容として解釈される脆弱性です。

たとえると、受付へ渡したメモの内容を表示するだけのはずが、メモに書かれた「管理画面を開く」という命令まで実行してしまう状態です。

正式には、次の流れで発生します。

信頼できない入力
        ↓
Sourceから取得
        ↓
文字列の連結・変換・保存
        ↓
危険なSinkへ渡される
        ↓
HTML・JavaScript・URLなどとして解析
        ↓
被害者のブラウザーで実行

MITREでは、XSSをCWE-79「Webページ生成時における入力の不適切な無害化」として整理しています。


Sourceとは

Sourceは、信頼できないデータの入口です。