CSRF

CSRFとは

cookieベースのセッションを使用している場合、ブラウザはリクエストの度にcookieを自動的にドメインに送信する。 そのため、ユーザーがログインした状態でWebアプリケーションに仕込まれた悪意のあるコードやリンクを実行した場合にあたかもユーザーによる処理として実行されてしまう。

  • ユーザーAがある掲示板にて書き込みを閲覧していたとする。その中に攻撃者が仕掛けのあるHTML image 要素を含めた書き込みを目にする。その要素が実際に参照しているのは画像ファイルではなく、ユーザーAのプロジェクト管理アプリを標的にしたコマンド(img src="http://www.webapp.com/project/1/destroy">)だったとする。

  • ユーザーAのwww.webapp.comへのセッションが切れていなかった場合、ユーザーAの有効なセッションIdを含むhttp://www.webapp.com/project/1/destroyがリクエストとしてサーバーに送られてしまい、結果、プロジェクトNo.1が削除されてしまう。

対策

.トークンによってリクエストの正当性を確認する

サーバー側でセッションにトークンを保存し、ブラウザからのリクエスト毎にトークンを含ませるようにする。 そうすることで、トークンが一致しない場合はリクエストを受け付けないようにする。

参考

Rails セキュリティガイド - Railsガイド