

http<>https間のでセッションIDの受け渡しにおいてのhttps専用のクッキーと、http+https兼用のクッキーの計2つを発行するやり方について教えてください。
httpで買い物カゴに商品を入れてhttpsで顧客情報を入力してもらうサイトを作成しています。
どちらの情報もセッションで管理しているのですが、他のサイトで質問させて貰った際、http<>https間のでセッションIDの受け渡しには、「SSLページと非SSLページが必要なサイトの場合、https専用のクッキーと、http+https兼用のクッキーの計2つを発行するというやり方が安全です。」との回答を頂きました。
ですが、私が知識不足で、どうしたらこれが実現出来るのかさっぱり分からないでいます。
ヤフーの知恵袋で質問した時に回答を頂いたのですが、理解出来ないでいます。
http://detail.chiebukuro.yahoo.co.jp/qa/question …
http<>https間ではPOSTやGETでSIDを渡しています。
これにどのようにクッキーの発行をすれば「安全」なサイトになるのでしょうか?
httpで入力したものはhttpsでも見れる。httpsで入力したものはhttpでは見れない。という動きになれば正解なのですよね?(すみません、これすらも分からないでいます)
別々のクッキーを発行する意味もよく理解出来ないでいます。
説明と合わせて、実際のコードも書いて頂くととても参考になります。
ご教授、よろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
>なぜ「さらにSSLから抜けるときはこのIDは破棄される」のでしょうか?
session_regenerate_id()で毎回異なるIDを作成する為です。。。
>「SSLで以下を実行
>setcookie("CHKID", "ID番号",0,"","",TRUE);」
>は何の為にしているのでしょうか?
>非SSLでこのクッキーの内容が見れないのは分かりますが、
>このクッキーは何の為にあって、何に使われるのでしょうか?
>SSLでのセッションと何の関係があるのでしょうか?
非SSLとSSLで共通して使うデータは、買い物かごの中身。
SSLだけでセキュアな環境でしか扱わないデータは個人情報!
つまり、ログイン情報です。
サイト作りの問題ですが、大体のサイトが、ログイン画面をSSLで、その他を非SSLで、そして決済画面をSSLでという具合で作られていると思います。
この「ログイン」と「決済」では連続して流れる場合と非SSLといったりきたりという場合が想定されます。
一度ログインしてブラウザを閉じてもいないのに再度ログインするのは面倒というユーザーのために、セッションとクッキーを駆使して、ログイン状態の維持を行なっています。
そういったプログラムのために、セキュアなクッキーや兼用できるクッキーというものを保持しようとするプログラムを作っているわけです。
SSLを使う意義やSSLで扱わなければいけないデータの定義、SSLで扱わないデータというのを考えれば理解できると思うのですが・・・
でも、理解というのはその人の考えなので、私の理解を押し付けているのかもしれませんね。
とりあえず、理解を後回しで、プログラムを作ってみて、運用。
テスト運用で危険なところやデータが安全じゃないところを探し出し、そのときにセキュアな仕組みを考えて組み込んでみてはいかがですか?
buraigashoさん、何度もお答え頂き、本当にありがとうございました!
何度もサンプルを試してみて、言われた通りに図を書いてみたりして、理解できました!
何回もの、私の意味の分かっていない質問に丁寧にお答えいただき、本当にありがとうございました!!!
No.3
- 回答日時:
ん~~~やっぱりごちゃごちゃになっています。
SSLで格納したSESSION変数はなくなりますし、コードも変になってます。。。。
あくまでクッキーのお話ですので、セッションIDはいったん忘れてください。
SSLで以下を実行
<?php
setcookie("CHKID", "ID番号",0,"","",TRUE);
?>
非SSLで
<?php echo $_COOKIE['CHKID']; ?>
をしても表示されませんが、SSLでこのコードを実行すると表示されると思います。
これがhttps専用クッキー
SSL・非SSLどちらでも以下を実行
<?php
setcookie("CHKID2", "ID番号2",0,"","",FALSE);
?>
クッキーは破棄されていないですし、セキュア属性もついていないので、SSL・非SSL両方で利用できます。これがhttp+https兼用クッキーです。
セッションIDは
SSLで利用する際に盗聴防止の為新しいものに変えます。それが
session_regenerate_id()
そして、SSL通信なのでこのIDは暗号化されているため、安全。
さらにSSLから抜けるときはこのIDは破棄されるので、安全。
という仕様です。
セッションIDとクッキーが混ぜ混ぜになっているので理解の為今一度勉強してみてください。
質問は、
1、セッションIDはひとつです。お試しのコードはセッション変数を使っていますので、
session_name(**);はひとつでいいです。
session_start();が余分。
2、はい。
3、いいえ。
4、上記の回答をご参考に・・・
Webページで取り扱うデータの流れを考えたときに、SSLと非SSLのデータの流れもフロー図なりアクティビティ図なりで明確にされてからですと、クッキーやセッションIDの流れも理解できるのではないでしょうか。
この回答への補足
何度も回答を頂き、ありがとうございます。
回答された内容は大体意味が分かっていると思っているのですが、根本的なことが分かりません。
「session_regenerate_id()
そして、SSL通信なのでこのIDは暗号化されているため、安全。」
は分かります。
ですが、なぜ
「さらにSSLから抜けるときはこのIDは破棄される」のでしょうか?
また、これが一番、最初っから理解出来なでいるのですが、
「SSLで以下を実行
setcookie("CHKID", "ID番号",0,"","",TRUE);」
は何の為にしているのでしょうか?
非SSLでこのクッキーの内容が見れないのは分かりますが、このクッキーは何の為にあって、何に使われるのでしょうか?SSLでのセッションと何の関係があるのでしょうか?
本当にすみません(>_<) 調べても調べても理解出来ないでいて。
本当に申し訳ありませんが、今一度、ご回答願えないでしょうか?
よろしくお願いいたします。
No.2
- 回答日時:
ごめんなさい。
ん~言葉にすると色々と違いが出てきますねぇ。私の言い回しもおかしいので混乱してしまう・・・
とりあえず、mitan3354さんが理解されている内容は間違っていません。
個人情報用のクッキーはhttps専用クッキー(SSLで発行したセッションID)
買い物かご情報などのhttpとhttpsで兼用したい情報はhttp+https兼用クッキー(セッション変数)
という考え方でしたほうがよいのかと・・・
ん===説明いまいちですねぇ。。。
私が勉強の時に使っているサイトをご紹介します。
そちらですと絵も交えて本当にわかり易いです。
セッションとクッキーとSSLについてのページ
http://www.geocities.jp/sugachan1973/doc/funto62 …
参考URL:http://www.geocities.jp/sugachan1973/doc/funto62 …
この回答への補足
ご回答ありがとうございます。
また、参考のURLも読ませて貰ったのですが、どうしても理解出来ず・・・
https専用クッキーとhttp+https兼用クッキーがあった場合、http画面ではhttp+https兼用クッキー(セッションID?)で情報を見れると思いますが、https画面ではどのようにしてhttps専用クッキー(セッションID?)とhttp+https兼用クッキー(セッションID?)両方の情報を取り出せば良いのでしょうか?
試しに、
・・・sslページにてという設定で・・・
<?php
session_name(専用);
session_start();
echo($_SESSION["専用情報"]);
session_name(兼用);
session_start();
echo($_SESSION["兼用情報"]);
?>
としてみたのですが、狙ったように、両方の情報は取り出せませんでした。
質問1、1つのページで、複数のセッションIDの情報を取り扱うことが出来るのでしょうか?
質問2、session_name(名前)毎に同(名前)のクッキーが発行されるのですよね?
質問3、https専用のクッキーと、http+https兼用のクッキーの計2つを発行するということは、2つのセッションIDが出来ているということですか?
質問4、sslのページではhttps専用のクッキーと、http+https兼用のクッキーの両方を使用するということですよね?その際には、どのようにクッキーの使い分けをするのでしょうか?というよりも、どのようにクッキーを扱うのでしょうか?
きっと、凄く何かを勘違いしていると思うのですが、色々なサイトを調べまわっても理解出来ないで悩んでいます。
ご教授、よろしくお願いします。
No.1
- 回答日時:
そもそもセキュアなサイト作りをしたいとおっしゃっていますので、ご自身のサイト作りを根底から考え、何がしたいということを明確にされたほうがいいと思います。
何が安全?という基準はサイト作りによりますし、設計の問題でもあると思います。
入力内容を最高の安全レベルで操作されるならページを遷移する際に内容破棄という手段もあります。
質問されている専用クッキーと兼用クッキーの2つを発行される場合、同様のセッション情報で行き来するのですから、当然httpでもhttpsでも内容は確認できるはずです。
もし、httpsからhttpに戻る場合、入力内容が見れなくするには、セッション情報を破棄すればそうなります。
ただし、セッション情報が破棄されていますので、httpからhttpsに戻る場合、入力内容は残りません。
ここで破棄をする場合としない場合の切り分けを考えますと、入力した人かそうでないかになると思います。
それを踏まえて、前回書かれているコードは、クッキーは、今見ている人が入力した人かどうかをチェックする道具として使用していますので、入力した人であれば、セッション情報を公開してみせるといった方法です。
セッションとクッキーの使い方を一度確認してみてはいかがでしょうか?
この回答への補足
他のサイトでも、「セッションとクッキーの使い方を一度確認してみてはいかがでしょうか」同様に指摘頂き、少し勉強し直したのですが、中々イメージが掴めないでいます。。。
「SSLページと非SSLページが必要なサイトの場合、https専用のクッキーと、http+https兼用のクッキーの計2つを発行するというやり方が安全です。」
という言葉の意味について、勘違いをしているのでしょうか?
SSL専用のセッションと非SSL用のセッションがあり、それぞれに別の情報を入れるイメージでいたのですが、違うのでしょうか?
だとしたら、https専用のクッキーと、http+https兼用のクッキーを別々に発行して、何をするのですか?
両方のクッキー情報を比べて、認証のように使うということでしょうか?
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 掲示板のセキュリティについてアドバイスお願い致します 1 2023/08/11 20:44
- PHP 「ログイン機能を持たせる」説明が気難しいです。 2 2022/10/11 02:59
- SSL・HTTPS httpとhttpsの安全性のちがいについておしえてください 3 2022/11/18 22:51
- 教えて!goo 教えて!goo以外の質問サイトを含め、回答がつく順番を教えて下さい。 2 2022/05/10 13:43
- PHP preg_matchで Warning: Undefined variableが出ます 1 2022/11/15 17:06
- C言語・C++・C# condaコマンドに対応したプロキシ設定が思うようにならないようです。 2 2022/04/11 17:15
- WordPress(ワードプレス) ワードプレスで、投稿一覧ページにタグを表示する方法 投稿につけたタグを、記事一覧ページにもカテゴリと 1 2023/05/10 21:41
- その他(プログラミング・Web制作) httpからhttpsへのリダイレクトについて質問です。 1 2022/03/24 14:35
- 日本語 〈場所を示す「に」と「で」〉 という誤り 36 2022/11/12 15:04
- PHP PHPのセッション有効期限について 5 2023/06/14 12:40
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
URLのパラメータをGETのままで...
-
セッション変数と配列
-
PDOの記述で、select前にSET文...
-
PHPのセッション有効期限について
-
ログイン画面をはさんだ後、自...
-
ブラウザを閉じた後もセッショ...
-
完全なセッション破棄をしたい
-
セッションについて
-
複数のサーバで運営する場合の...
-
Dosブロンプトでtabを出力したい
-
Excel VBA:特定の文字列以降(...
-
「取得先」という表現について
-
shシェルスクリプト 空白行の...
-
バッチファイルでpingの結果を...
-
【C#】DataGridViewの最大列数...
-
EXCEL、マクロ-改ページ行番号...
-
POSTで受け渡したものを保存し...
-
開始と終了を指定して、その間...
-
ActiveReportのサブレポート機...
-
switch()文で値の大小比較
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
URLのパラメータをGETのままで...
-
ログイン画面をはさんだ後、自...
-
ブラウザを閉じた後もセッショ...
-
PHP SESSION変数を複数使用でき...
-
セッション変数にパスワードを...
-
POSTで情報を他のサーバーに渡...
-
PHPのセッション有効期限について
-
複数のサーバで運営する場合の...
-
完全なセッション破棄をしたい
-
Sessionの上限について
-
二重ログイン管理について
-
セッションのスコープ(有効範...
-
セッション変数の命名規則
-
クッキーを使わないセッション...
-
http<>https間のでセッションID...
-
「戻る」ボタンで値の保持
-
セッションのタイムアウト管理
-
初歩的な質問 セッション管理に...
-
セッションについて
-
PHPでの複数ページに渡るメール...
おすすめ情報