そもそも、データ操作URLが一意だから狙われるんじゃないのかなと思ったり。
それってmod_rewriteで、解決できないかな?
たとえばmixiの日記にコメントを入れるURLはこれ。
http://mixi.jp/add_comment.pl?diary_id=23465754534
もし、このURLが類推されにくいモノだったら、少しは安全?
http://mixi.jp/LOGIN_USER_ID/add_comment.pl?diary_id=23465754534
このままでは、USER_IDわかれば攻撃ができる。なので
http://mixi.jp/md5Hex(LOGIN_USER_ID.'CERT_KEY')/add_comment.pl?diary_id=23465754534
にしておいて、URLを類推不可にすれば、無差別テロは防げるんじゃないか。*1
ユーザー認証後にデータ操作するURLが一意である必要はないんじゃないか。広く世界に公開するURLじゃないんだ。適当なURLでイイじゃないか。*2
だって全ユーザー同じURLでアクセスするからCSRF出来るんじゃないの。。。
で、思うのは。
ログインユーザーに発行するべきはCOOKIE&SESSION_IDではなく、ユーザー専用のURLであるべき?
なので対策すべきはURLだと思うのですが。*3
これってどうなんだろう。高木さんのブログを読み返してみても、こういう手法は提案されてない。
どうなんだろう全く駄目なのかな。*4
*1:URLを盗聴されてたら全く意味はないが、攻撃者の攻撃機会を減らすことは効果的じゃないのかな。盗聴に関しては、SESSIONはセキュアCookieで対処できるけど、URLの盗聴を防ぐ手段はないのかもしれない。
*2:もちろん、SESSION_IDをURLに埋め込むバカはしない前提ですが
*3:COOKIEからのアクセスは、一度トップページを閲覧しないと、SESSION_IDが発行されないようにするのも一手だと思ったのですが。SESSION_IDが発行された後にリンク踏むと、どうしようもないんだよなぁ
*4:CSRF対策について調べてると、セッション追跡やCookieの話になっていくのが妙だなと思ったのでエントリ書いてみた。