session_regenerate_id
PHPはセッション固定攻撃に弱い。対策の一つとしてsession_regenerate_idという関数を使う方法がある。
Ethnaでsession_regenerate_idを使うと、セッションIDが短くなってしまうため、セッションハイジャックに弱くなってしまう。ということでEthna用の関数。
/**
* セッションIDの変更
*
* @access public
*/
function session_regenerate_id()
{
$ctl = Ethna_Controller::getInstance();
$session =& $ctl->getSession();$QQ = serialize($_SESSION);
$session->destroy();
$session->start();
$_SESSION = unserialize($QQ);
}
やっていることは単純で、セッション変数を待避、Ethnaでセッションを破棄&作成、待避したセッション変数を戻すだけ。あとは使う場所を間違えないこと。