like life lives

技術以外のことに興味が寄りすぎな技術ブログ

CSRFについて

クロスサイトリクエストフォージェリ(CSRF)

というWebの攻撃手法があります。

これはユーザーのブラウザから強制的に別のサイトへリクエストを送らせ、商品購入などを自動で行わせてしまうという攻撃です。


f:id:sugar_affordance:20130227221048p:plain


④、⑤はユーザーにまったく気づかれないように偽装されている場合もあり、利用者にとってはなにがなんだか分からないうちに高額商品を買わされていたり、掲示板に書き込みさせられていたり、たまったものではありません。

攻撃の起点となるのは単なるリンクなので、気づかれにくいというのもやっかいな点です。

回避方法としてはおおまかに

  • ユーザーがブラウザ上で行動を制限する
  • 被攻撃サイトのサーバーでリクエストをチェックする

という二種類があります。

さらに細かく分けると

ユーザー側
  1. あやしいリンクを踏まない
  2. JavascriptをOFFにする


2は現実的に無理だと思います。

1を徹底するしかないのですが、リンクを踏まずにWebを巡回するのは不可能なので、結論としてはユーザー側で対策をとるのは非常に難しいでしょう。

サーバ側
  1. refererをチェックして外部サイトからのリクエストを拒否する
  2. 一貫性チェック用のパラメータを持たせる


これはどちらも比較的簡単に実装できる手段です。

pukkyuももちろん、さまざまなHTTPリクエストで成り立っているので、CSRFの攻撃にさらされる可能性は十分あります。

次回から、pukkyuでどのようにCSRFを回避しているかを書いてみようかと思います。



ところで、上図の③④⑤に気づかずに被害を受けた状況は、まさにあのスタンドに攻撃を受けたかのようです。

「キング○リムゾン! 結果だけが残る!」(ジョジョ知らない人すみません)