redirectすると、sessionが切れてしまう現象の件

前回の補足



ブラウザの種類により、redirectすると、sessionが切れてしまう現象が起きました

ロームと、サファリで起きるみたいで、前回はcore.phpSecurity.levellowにすることで解決しましたが
根本の原因はリファラーのドメインが原因のようでした。



リファラーとは
 →あるWebページのリンクをクリックして別のページに移動したときの、リンク元のページのこと




・cake/libs/session.php


switch ($this->security) {
case 'high':
$this->cookieLifeTime = 0;
if ($iniSet) {
ini_set('session.referer_check', $this->host);
}
break;
case 'medium':
$this->cookieLifeTime = 7 * 86400;
if ($iniSet) {
//ini_set('session.referer_check', 'twitter.com');
ini_set('session.referer_check', $this->host);
}
break;
case 'low':
default:
$this->cookieLifeTime = 788940000;
break;
}


highmediumでは
session.referer_check$this->hostを見ています。




session.referer_checkとは
HTTP Referer に おいて確認を行う文字列を指定します。Refererがクライアントにより 送信されており、
かつ、指定した文字列が見付からない場合、埋め込 まれたセッションIDは無効となる



という、このチェックを行われるので、
OAuth認証ではtwitter.comと自分のプログラムのおいてあるサーバを行き来するので、
ドメインが異なってしまい、セッションIDが空にされてしまうようでした!




解決方法としては、リファラーを同じドメイン(プログラムを置いてあるドメイン)に変更すればできそうな
ものなんですが、ちょっと無理だったので、違う方法でセキュリティーを考えたいと思います。


CakePHPはSecurity.level lowまたはmediumだとブラウザを閉じても、セッションが終了しません
mediumの時は7日間、lowの時は25年間セッションが保持されるようです


セッションをブラウザを閉じたときに終了させたいので、
http://www.mrk.jp/taxonomy/term/72 を参考にしてみました!!!!!