環境
- PHP 5.3.x
- CakePHP 2.4.7
CakeSession::renew()
セッションアダプション、セッションフィクセイションの脆弱性対策として、ログイン後session_regenerate_id(true)でセッションIDを付け直すことが推奨されています。
CakePHPのフレームワークにそのような機能がないかと調べた結果、lib/Cake/Model/Datasource/CakeSession.phpにsession_regenerate_id(true)を呼んでいるrenewメソッドがあったので、これを利用することにしました。
SomeController.php
CakeSession::renew();
core.phpでSession.autoRegenerateオプション(CakeSession::$requestCountdownがリジェネレートリクエスト間隔)を有効にしてもいいですが、定期的に変更しなくても、ログイン時だけでいいので、この方法を使っています。
これでログイン時にセッションIDを付け直すことができました。今のところ副作用はないようですが、様子見です。