人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPとセッションについて、なんとなくでもいいので教えてほしいのですが、ログイン画面はhttps行い、ログインしたらhttpで行うことにした場合、毎回session_startを行っているプログラムは問題ありますでしょうか。
SSLと非SSLではセッション管理が違うということなので。

●質問者: yoichi111
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:HTTP HTTPS PHP SSL セッション
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● pahoo
●40ポイント ベストアンサー

httpsページからhttpページへ遷移した際、sessionを引き継ぐことができるかというご質問でしょうか。


PHPの場合、標準の session 関数を使っている限り、引き継ぐことができます。

ただ、これはセキュリティ上の問題をはらんでおり、詳しいことは「PHP: セッションにセキュリティ対策する」をご覧ください。

◎質問者からの返答

なるほど。

httpsとhttpどちらもクッキーは送信されるので

session_idを引き継ぐことはできるけど、盗聴という観点から危険といういことですね。

httpsだからといってhttpで行っているsession_startの動きは代わらないということですね。

対策するとしたらhttpではクッキーを送らないようにする代わりに

httpsのときに何らかの共通IDをどっかに作る必要があると。

今までhttpでやってたものを一部httpsにしようかと

思っていたので一応動くということでよいでしょうか。


2 ● goodvn
●40ポイント

https と http が同じサーバ(場合によっては同じプログラム?)であれば,セッションは共有されますよ.

セッションは,cookie を使うほかに,URL に埋め込む事もできます.しかし,どちらの場合も,http 通信に於いては,暗号化されないので,傍受される可能性があります.

私の場合は,cookie を使って送られるセッションキーを毎回変えるようにしています.具体的には,

session_regenerate_id()

という関数を使います.

この場合,cookie や URL 経由のセッションキーはワンタイムなので,傍受されても,そのセッションキーは使えなくなっている可能性が高くなり,安全性が高くなります.サーバに対する負荷はあがります.

また,クライアントのセキュリティポリシーによっては,https で受け取った cookie を,http の際には送信しない事もあります.(URL の場合は,関係なくなりますね)

◎質問者からの返答

なるほど、同じサーバなら共有されるわけですね。

session_regenerate_id()を毎回呼び出してあげて、異なるセッションIDをもつ

クッキーを送りつけるようにすれば、傍受しても安全性は高くなるというわけですね。

これ使ってみようと思います。ありがとうございます!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ