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

SSLと非SSLではセッション管理が違うということなので。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2008/10/30 17:02:47
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント40pt

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


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

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

id:yoichi111

なるほど。

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

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

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

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

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

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

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

2008/10/29 16:49:36

その他の回答1件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633ここでベストアンサー

ポイント40pt

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


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

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

id:yoichi111

なるほど。

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

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

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

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

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

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

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

2008/10/29 16:49:36
id:goodvn No.2

回答回数228ベストアンサー獲得回数18

ポイント40pt

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

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

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

session_regenerate_id()

という関数を使います.

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

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

id:yoichi111

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

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

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

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

2008/10/30 17:02:02

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません