httpとhttps間でのセッション同期について(PHPの場合)
~これは個人的なメモです~
参考ページ:
http://d.hatena.ne.jp/seto-san/20091104/1257328931
http://q.hatena.ne.jp/1095584788
1.URLが同じホスト名でも、httpとhttpsではcookieでのセッションIDの受け渡しは自動的に行われない。
2.httpでは通信が盗聴される可能性があるため、管理機能へログインしたセッションIDをhttpで送受信するべきではない。
3.対策→httpとhttpsで別セッションIDを使用する。
(1)httpにてセッション作成し、ログインの際にform等でhttpsにhttp専用のセッションIDを渡す。
(2)ログインできたらhttps専用のセッションを開始し、セッションIDを取得したらいったんクローズ。
session_start();
$ssid = session_id(); // https専用のセッションID保存
session_write_close();
$ssid = session_id(); // https専用のセッションID保存
session_write_close();
(3)http専用のセッションにhttpで表示に必要な最低限の情報だけを保存してセッションをcloseする。
session_id(http専用のセッションID);
session_start();
~http表示に必要最低限の情報保存~
session_write_close();
session_start();
~http表示に必要最低限の情報保存~
session_write_close();
(3)https専用のセッションを再開しhttp専用セッションIDも保存しておく。
session_id($ssid); // https専用のセッションID
session_start();
$_SESSION['http_sessid'] = http専用のセッションID; // http専用のセッションID保存
~処理~
session_start();
$_SESSION['http_sessid'] = http専用のセッションID; // http専用のセッションID保存
~処理~
(4)ログアウトの際には、https専用のセッションだけでなくhttp専用セッションもdestroyする。
session_start();
http専用のセッションID = $_SESSION['http_sessid'];
session_destroy();
session_id(http専用のセッションID);
session_start();
session_destroy();
~処理~
http専用のセッションID = $_SESSION['http_sessid'];
session_destroy();
session_id(http専用のセッションID);
session_start();
session_destroy();
~処理~
TrackBack URI : http://www.space-i.jp/wp/wp-trackback.php?p=747
Comments (2)
感謝です。
助かりました。m(_。_)m
コメント by besei — 2011/4/27 水曜日 @ 21:10:53
お役に立てたのであれば私もうれしいです(^-^)
コメント by はら — 2011/4/28 木曜日 @ 12:56:30