注意
結構「状況限定」なので、本当に「一案」程度。
前提
セッションIDが定期的に変わる。だから「セッションIDをtokenに」しにくい。
一案
「消すのが面倒くさければmemcachedにすればいいぢゃない」作戦
CSRFで引っ掛けたい画面を「画面A → 画面B」の遷移である、と仮定します。
画面Aでの処理
・ディードなIDを作成( http://d.hatena.ne.jp/gallu/20120607/p1 のコメント参照。トークンそのものは http://d.hatena.ne.jp/gallu/20120402/p2 を参照)
・ディードなIDをkeyに、ユーザIDをvalueに、寿命を10分(この辺適当)にして、memcachedにぶち込む
・ディードなIDをhiddenに埋め込んでおく
画面Bでの処理
・hiddenからディードなIDを取得
・memcachedに確認
・ユーザIDを確認
・all OKなら
・memcachedの該当情報を削除
・OKな処理をぶちかます
こんな感じ?
とりあえずざっくりだけど、ヘンにゴミもたまらないし、楽に実装できるんじゃなかろうか、って思うんだけど、どだろ?
あんまり高圧だともうちょい考えたほうがよいかもなのだけど…結構な圧まではいけそうな気もする。
今度、チャンスとタイミングを見計らって、検証でもしてみますか。