ymgt先生のCookieMonster有りの場合のCSRF対策について

http://yamagata.int21h.jp/d/?date=20130302#p01

についてです。

実は、私も似た事を考えていました。
複数の同じ名前のCookieがあるという異常な状態を作り出すことによって、CookieMonsterがそこにいるかどうか調べることはできるのではないか、ということです。

でも、そのためには、掲示板へのPOSTのようなCSRF対象となるアクションの前に、ウェブアプリに一度アクセスしてもらい、Set-Cookieヘッダを食べてもらう必要があります。

しかしCSRFが仕掛けられた場合、必ずしもウェブアプリを事前に訪れてはくれずに、いきなり罠のページを踏んで一発リクエストがウェブアプリに飛んでくるわけです。
その時点でウェブアプリ側は、それがCSRFかどうか判定しなくてはなりません。

『Cookieが1つしかないから、Set-Cookieで複数のCookieを喰わせよう』
とする場合、CookieMonsterバグを持たないブラウザでは無限ループに入ってしまいます。

そのため、この方式の場合、User-Agentの値から、『そのブラウザがCookieMonsterバグを持つものか、持たないものか』を判別する必要があります。
持つものの場合には、Set-Cookieで複数のCookieを喰わせ、毒入りされていないことを確認できたらCSRFトークンをチェックして投稿を受け入れます。
持たないものの場合には、そもそも問題はないので、普通にCSRFトークンをチェックしてOKであれば投稿を受け入れます。

…で、IEだったら必ずCookieMonsterバグあるんですっけ?それなら上記でいけると思いますよヽ(´ー`)ノ

Advertisements


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s