• 締切済み

SSLで、セッションを保ちたい。

PHPでコミュニティサイトのようなものを作っているのですが、個人情報もある程度扱うことになっているため、SSLを導入することになりました。 そこで、とりあえずレンタルサーバの無料サービスである、共有認証SSLを用いて、ログインや住所登録をしてもらうことにしようと思ったのですが上手くいきません。 やりたいことは、ログインのときや、住所登録(または変更)のときだけSSL通信にして、そのほかの会員制の掲示板への書き込みなどは、普通にhttpでやりたいのですが、色々試していると、どうもSSL(https)から、普通のhttpに戻るときに、セッション変数が持ちまわせていないことが原因だと分かってきました。 アドレスは以下のような感じなので、 http://www.example.com/ https://userID.securesites.com/ おそらく見えるファイルはどちらも同じなのですが、実質的に別サーバ扱いであるために、セッション変数が持ちまわせないのかな?という風に今は考えています。 この推測は正しいでしょうか? セッション変数を持ちまわすには、独自認証SSLにすれば解決するのでしょうか?? 独自認証SSLの場合アドレスでいうと、以下のようなものになります。 https://www.example.com/ また、共有認証でも、ログイン後、httpに戻ったときにちゃんとログインした状態を保持する方法はありますか? その他、セッションハイジャックの対策など、注意すべき点などがございましたら、ご教授お願いします。よろしくお願いします。

みんなの回答

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.1

大半のサーバの場合、セションを区別するためにCookieを利用します。 CookieはデフォルトではCookieを配布したサーバだけにしか送信しないようにしていしているので、別のサーバ等を利用する場合は、Cookieの設定を変える必要があります。 今回の場合、URLが変わっていると言うことなので、session.cookie.domainの値を変える必要があるのだと思います。また、SSLと非SSLでCookieを送信するかしないかを切り替えられる(session.cookei.secure)ので、それも注意してください。

leeeeeeee
質問者

お礼

ありがとうございます。 大変助かります。 session.cookie.domainの値を変えるには、 session_set_cookie_params 関数を使って、 session_set_cookie_params(0,"/","userID.securesites.com",0); などとすれば良いのでしょうか?

関連するQ&A