有名フレームワークのCSRF対策方法を調べたまとめ
ZendFramework
流れ
- 表示時 : token生成→hiddenセット + セッションにセット
- 送信時 : 送られてきたtokenをセッションにあるものと同じかでチェック
token生成方法
ランダム値 + salt + 固定値 + ランダム値
md5( mt_rand(1,1000000) . $this->getSalt() . $this->getName() . mt_rand(1,1000000) );
まとめ
ランダム値をセッションにいれて、送られてきたものとチェック。
cakephp
流れ
- 表示時 : token生成→hiddenセット + セッションにセット
- 送信時 : 送られてきたtokenをセッションにあるものと同じかでチェック。有効期限設定可。
まとめ
ランダム値をセッションにいれて、送られてきたものとチェック。
fuelphp
流れ
- 表示時 : token生成→hiddenセット + クッキーにセット
- 送信時 : 送られてきたtokenをクッキーにあるものと同じかでチェック。有効期限設定可(=クッキーの有効期限)。
まとめ
jsにも対応してるのでjsでクッキー書いたりしたいからクッキー使ってるみたい。
ruby on rails
流れ
- 表示時 : token生成→hiddenセット + セッションにセット
- 送信時 : 送られてきたtokenをセッションにあるものと同じかでチェック
まとめ
ランダム値をセッションにいれて、送られてきたものとチェック。
結論
あいだをとって
- ランダム値をセッションにいれて、送られてきたものとチェック
- 有効期限チェック
- salt + shha1で生成
が一番よさそう。つまりcakeのが一番よさそう。