2011/2/22 火曜日

httpとhttps間でのセッション同期について(PHPの場合)

Filed under: ネットワーク関連 — はら @ 11:08:45

~これは個人的なメモです~

参考ページ:
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();

 (3)http専用のセッションにhttpで表示に必要な最低限の情報だけを保存してセッションをcloseする。

session_id(http専用のセッションID);
session_start();
~http表示に必要最低限の情報保存~
session_write_close();

 (3)https専用のセッションを再開しhttp専用セッションIDも保存しておく。

session_id($ssid); // https専用のセッション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();
~処理~

2件のコメント »

  1. 感謝です。
    助かりました。m(_。_)m

    コメント by besei — 2011/4/27 水曜日 @ 21:10:53

  2. お役に立てたのであれば私もうれしいです(^-^)

    コメント by はら — 2011/4/28 木曜日 @ 12:56:30

この投稿へのコメントの RSS フィード。 TrackBack URI

コメントする

HTML convert time: 0.710 sec. Powered by WordPress