gallu’s blog

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

CSRF実装の一案

注意
結構「状況限定」なので、本当に「一案」程度。


前提
セッション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な処理をぶちかます


こんな感じ?
とりあえずざっくりだけど、ヘンにゴミもたまらないし、楽に実装できるんじゃなかろうか、って思うんだけど、どだろ?
あんまり高圧だともうちょい考えたほうがよいかもなのだけど…結構な圧まではいけそうな気もする。


今度、チャンスとタイミングを見計らって、検証でもしてみますか。