CSRF

 CSRF攻撃とは、Webアプリケーションのサーバー側機能を、利用者の意図に反して勝手に実行させる攻撃である。

 掲示板の例を用いて説明しよう(図1)。誰でも書き込みできる掲示板example.jpがあり、図2の入力フォーム(要点のみ)から投稿できるとする。これに対して、攻撃者がevil.example.comに、図3の罠のページを用意したとする。

図1●CSRFの仕組み
図1●CSRFの仕組み
[画像のクリックで拡大表示]
図2 CSRFの問題がある入力フォーム
図3 CSRFの罠ページ

 form要素のaction属性には同一生成元ポリシーのような制約はなく、どこでも好きなURLを指定できる。このため利用者がボタンを押すと、犯行予告が掲示板に書き込まれてしまう。

 さらに、この状態だと利用者がボタンを押さない限り攻撃は成功しないので、攻撃者はbody要素に以下のJavaScriptを追加する。

<body onload="document.forms[0].submit()">

 これにより、利用者が罠のページを閲覧しただけで犯行予告が利用者のブラウザーを通して書き込まれることになる。これがCSRF攻撃だ。