• 締切済み

cookieoffとセッション管理について

セションを使ったメールフォーム(入力画面→確認画面→メール送信→完了画面の4ファイル)を利用しています。 毎画面を表示させる直前で、セッションに保持している値を呼び出す設計です。 最近、セッション管理をcookieのみにした方がより安全だというサイトを見て、試しに今のメールフォームでブラウザ設定をcookieブロックにして試してみました。 ================================== ブラウザ  cookieブロック PHPの設定  session.use_cookies On On  session.use_only_cookies Off ================================== 予想では、cookieをブロックしているが、それ以外の手法も認めているため、URLの後ろに「.php?hogehoge~」と表示されると思っていたのですが何も表示されません。 そしてメールフォームも問題なく機能してしまいました。 ブラウザ側のcookie設定は「教えて!goo」で何度も再ログインが表示されたことから問題ないと思います。 個人的に原因かもと思っているのは ○メールフォームがローカルの状態で実験しているから ○メールフォームがSSL通信だから(でもローカル用なので偽の証明です;) どなたかどうしてなのか教えてください。お願いします。

noname#102084
noname#102084
  • PHP
  • 回答数1
  • ありがとう数1

みんなの回答

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.1

メールフォームは通常post methodで送信するように作りますので、 input type="hidden" 要素で、session名とidを埋め込んでいるのではありませんか? プログラム側で、直接session_name()やsession_id()を取得して埋め込んでいる場合は session.use_only_cookies設定には関係なく送信されます。 post通信なので、urlには表示されません。 確認画面出力部分のphpソースやその出力htmlソースをご確認下さい。

noname#102084
質問者

補足

回答ありがとうございます。 たしかにPOST送信していますが、意図的にhiddenでの埋め込みをなくして作りましたので、その可能性はないと思います。 >session_name()やsession_id() 埋め込んでおりません。 PHPサイトによると、セッションIDは ・Cookies ・URLパラメータ のどちらかで管理する必要がありますとのこと。 前者の「Cookies」をブラウザ側でブロックしたのですが、URLパラメータもなくセッションが継続されるのが理解できないのです;

関連するQ&A

  • セッションの変数の受渡しについて

    よろしくお願いします。 セッションを利用して変数受渡しを行おうと思い、初めての試み なので簡単なものを作ってやってみたのですが、変数に値をセットしたtest.phpでは値が表示されますが、リンク先のtest2.phpでは表示されません。 以下のソースで試しています。 -------------------------------------------------- test.php <?php session_start(); session_register("aa"); $_SESSION['aa'] = 1234; print $_SESSION['aa']; print "<p>"; print "<a href='test2.php'>next</a>";←ここの画面では表示されます。 ?> test2.php <?php session_start(); print $_SESSION['aa'];←表示されません ?> ---------------------------------------------- 想定では画面に”1234”と出ると思っていたんですが・・。 他質問をみて真似て色々試したのですが、やはり表示できませんでした。 環境は以下です apache2 php ver4.4.4 session Session Support enabled Registered save handlers files user Directive Local Value Master Value session.auto_start Off Off session.bug_compat_42 On On session.bug_compat_warn On On session.cache_expire 180 180 session.cache_limiter nocache nocache session.cookie_domain no value no value session.cookie_lifetime 0 0 session.cookie_path / / session.cookie_secure Off Off session.entropy_file no value no value session.entropy_length 0 0 session.gc_divisor 100 100 session.gc_maxlifetime 1440 1440 session.gc_probability 1 1 session.name PHPSESSID PHPSESSID session.referer_check no value no value session.save_handler files files session.save_path c:\windows\Temp c:\windows\Temp session.serialize_handler php php session.use_cookies Off Off session.use_only_cookies On On session.use_trans_sid On On 環境の問題でしょうか?各ブラウザで試したのですが、ダメでした。 初歩的質問で申し訳ありませんが、ご教示よろしくお願いします。

    • ベストアンサー
    • PHP
  • session(PHP)が表示されない。

    sessionを理解するために簡単な例文を入力して sessionを呼び出そうとしました。 しかしできません。文法上は本のCDを丸写しなので 問題ないと思います。 設定(php.ini)で何か確認する場所があればお願いします。 Windows XP Apache 1.3.27 PHP 4.3.1 session.auto_start Off Off session.bug_compat_42 On On session.bug_compat_warn On On session.cache_expire 180 180 session.cache_limiter nocache nocache session.cookie_domain no value no value session.cookie_lifetime 0 0 session.cookie_path / / session.cookie_secure Off Off session.entropy_file no value no value session.entropy_length 0 0 session.gc_dividend 100 100 session.gc_maxlifetime 1440 1440 session.gc_probability 1 1 session.name PHPSESSID PHPSESSID session.referer_check no value no value session.save_handler 0 0 session.save_path /tmp /tmp session.serialize_handler php php session.use_cookies On On session.use_only_cookies Off Off session.use_trans_sid On On

    • ベストアンサー
    • PHP
  • レンタルサーバーのセッション管理について

    無料でPHPを使えるレンタルサーバーでのセッション変数の使い方について教えていただきたく投稿いたしました。PHPインフォで調べてみますと、セッション変数は使える模様でした。セッション変数の保存先をsession_save_pathを使って自分のフォルダに変更しようとしているのですが、上手く行きませんでした。セッションに関する情報は下記の通りです。この中で/var/lib/php/sessionというパスがありますが、デフォルトの状態ではこのsessionというフォルダに保存されると思うのですが、レンタルサーバーですので多数の人が使っていますので、これを自分が作成した自分だけのフォルダに保存したいのですが、どうすればよいのでしょう。色々と試してみましたが上手く保存できませんでした。ちなみにセッションの保存先のパスのしていを、w7.oroti.com/~****/*****/sessionと言うようにしてみたり、指定されたファイルの置き場所がpublic_htmlというフォルダなので、 public_html/sessionとしてsessionフォルダを作ってみたり、したのですが保存できませんでした。詳しい方がおりましたら宜しくお願いいたします。セッションでの管理ができないので、クッキーで対応しております。でも、勉強のためになんとかこの課題を克服したいと思っています。宜しくお願いします。 <?php session_save_path("w7.oroti.com/~****/session"); session_start(); if(isset($_SESSION["cout"])){ $_SESSION{"count"]++; } else{ $_SESSION{"count"]=!; } ?> ------------------------------------------------------- session Session Support enabled Registered save handlers files user Registered serializer handlers php php_binary wddx Directive Local Value Master Value session.auto_start Off Off session.bug_compat_42 Off Off session.bug_compat_warn On On session.cache_expire 180 180 session.cache_limiter nocache nocache session.cookie_domain no value no value session.cookie_lifetime 0 0 session.cookie_path / / session.cookie_secure Off Off session.entropy_file no value no value session.entropy_length 0 0 session.gc_divisor 1000 1000 session.gc_maxlifetime 1440 1440 session.gc_probability 1 1 session.hash_bits_per_character 5 5 session.hash_function 0 0 session.name PHPSESSID PHPSESSID session.referer_check no value no value session.save_handler files files session.save_path /var/lib/php/session /var/lib/php/session session.serialize_handler php php session.use_cookies On On session.use_only_cookies Off Off session.use_trans_sid 0 0

    • ベストアンサー
    • PHP
  • セッションが変数が取得できません

    こんにちは。初心者で大変申し訳ないのですが、2日間悩みましたがどうしても解決できないため質問させて頂きました。どうかご教授下さい。 PHPのセッション機能の利用をしようと以下のような環境でテストスクリプトを実行したのですが、うまくいきません。 PHPバージョン4.3.10 register_globals On session.auto_start Off session.bug_compat_42 On session.bug_compat_warn On session.cache_expire 180 session.cache_limiter nocache session.cookie_domain no value session.cookie_lifetime 0 session.cookie_path / session.cookie_secure Off session.entropy_file no value no session.entropy_length 0 session.gc_divisor 100 session.gc_maxlifetime 1440 session.gc_probability 1 session.name PHPSESSID session.referer_check no value session.save_handler files session.save_path /tmp session.serialize_handler php session.use_cookies Off session.use_only_cookies Off session.use_trans_sid On SESSION登録側スクリプト <?php session_start(); $_SESSION['tarou'] = 50; ?> <a href="test.php">test</a> 結果表示側スクリプト <?php session_start(); echo($_SESSION['tarou']); ?> session.use_trans_sid Onで透過的にURIにセッションIDを埋め込むタイプで、 セッションファイル自体は作られているのですが セッション変数は登録されておらず、空のセッションファイルとなってしまっています。 色々と調べてみたのですがどうしても解決できません。 大変お手数ですがどうか宜しくお願い致します。

    • ベストアンサー
    • PHP
  • さくらサーバーでsessionが使えません。

    題名の通りなのですが、さくらのレンタルサーバープレミアムを使っているのですが、 セッションがまったく動きません。 phpを勉強をし始めたばかりでプログラムはあまり詳しくなく初心者サイトを見ながらウェブサイトを 作っていたのですが・・。 以前は動いたのですが、一年ぶりくらいにphpでサイトを作っている最中に気がつきました。 サーバーの仕様が変更になったのでしょうか・・。 xamppをインストールをしてローカル環境で試した所ちゃんとsessionは動いています。 アップロードすると動きません。(変数の受け取りができません) formで値を送ったりは問題ないのですがsessionが動かないため非常に困っています。 プログラムに問題はなく、ググっても解決できません。 <?php phpinfo(); ?> でセッションは下記のような状況になっていますが、私ではまったくわからず、session.save_pathを明示的に 示さなければならない、などちらほら見かけますがよくわかりません。 どしたら動くのでしょうか・・。 Session Support enabled Registered save handlers files user Registered serializer handlers php php_binary Directive Local Value Master Value session.auto_start Off Off session.cache_expire 180 180 session.cache_limiter nocache nocache session.cookie_domain no value no value session.cookie_httponly Off Off session.cookie_lifetime 0 0 session.cookie_path / / session.cookie_secure Off Off session.entropy_file /dev/urandom /dev/urandom session.entropy_length 32 32 session.gc_divisor 1000 1000 session.gc_maxlifetime 1440 1440 session.gc_probability 1 1 session.hash_bits_per_character 5 5 session.hash_function 0 0 session.name PHPSESSID PHPSESSID session.referer_check no value no value session.save_handler files files session.save_path no value no value session.serialize_handler php php session.upload_progress.cleanup On On session.upload_progress.enabled On On session.upload_progress.freq 1% 1% session.upload_progress.min_freq 1 1 session.upload_progress.name PHP_SESSION_UPLOAD_PROGRESS PHP_SESSION_UPLOAD_PROGRESS session.upload_progress.prefix upload_progress_ upload_progress_ session.use_cookies On On session.use_only_cookies On On session.use_trans_sid 0 0

    • 締切済み
    • PHP
  • セッション内容が化ける?

    PHP初心者です。 次の環境で一種のグループウェアを開発しました。 OS: RedHat Linux9.0 Web Server: Apache2.0.10 DB: PostgresSQL 7.4.2 PHP4.2.2 「ある社員が、ログインしたまま会議に出席し数時間後に戻ってみると、 画面内容が別の社員のものになっている」 という不可解な報告がありました。 調べてみるとログイン時のポータル画面は変化していないのですが、そこから 画面を切り替えて明細表示すると、社員名称が別の社員になっているのです。 しかも明細内容は何も表示されていません。 セッションで取得した内容が化けているのではないかと思っているのですが、 知識不足で行き詰まっています。 php.ini の設定は次のようになっています。(defaultだと思われます) session.save_handler = files session.use_cookies = 1 session.name = PHPSESSID session.auto_start = 0 session.cookie_lifetime = 0 session.cookie_path = / session.cookie_domain = session.serialize_handler = php session.gc_probability = 1 session.gc_divisor = 100 session.gc_maxlifetime = 1440 session.bug_compat_42 = 1 session.bug_compat_warn = 1 session.referer_check = session.entropy_length = 0 session.entropy_file = session.cache_limiter = nocache session.cache_expire = 180 session.use_trans_sid = 0 原因と対処法が分かる方、どうか教えてください。

    • 締切済み
    • PHP
  • PHP SESSION 設定について

    PHP(レンタルサーバー:5.3.6)(ローカル:5.3.26)を使用しています。 簡単なログインフォームを作っていました。 ローカルでテスト運用したところ、問題なく動作していたのでレンタルサーバーにアップロードしたところ、SESSIONが動いていない(?継承していない?)ことに気づきました。 そこでphpinfoを確認すると レンタルサーバーは、 session.cookie_httponly=1(On) session.cookie_secure=1(On) になっていました。XSS攻撃に全部ではないけどレンタルサーバーの設定だと有効だということなので、ローカルもレンタルサーバーの設定に合わせたいと思っています。 ※設定をoffにすると問題なく動作します。 sample2.phpで、「$_SESSION['sample_title']」が表示されなくなってしまいました。 どのようにすれば、sessionが正しく動作するかご教授お願いいたします。 抜粋スクリプト ■sample1.php session_start(); session_regenerate_id(TRUE); $_SESSION["sample_title"] = "PHPのSESSION"; //セッション登録 echo "$_SESSION['sample_title']に代入した値は「<?php echo $_SESSION['sample_title'] ?>」です。"; echo "<a href = 'sample2.php'>次のページ</a>"; ■sample2.php session_start(); session_regenerate_id(TRUE); echo "受け取ったセッション変数の値は「".$_SESSION['sample_title'] ."」です。";

    • ベストアンサー
    • PHP
  • 携帯サイト用PHPのセッションについて

    はじめまして。 携帯サイトでPHPのセッションを使ってリンク先の【Location:】内にURL情報を埋め込みたいのですが、「携帯ではクッキーがつかえない」「【session.use_cookies】と【session.use_trans_sid】の設定で使えるようになる。」と見たので試しているのですがうまくいきません。助けてください。 今試してみている記述内容は下記となっています。 ・記述内容: >>test_a/1.php <?php ini_set("session.use_cookies","0"); ini_set("session.use_trans_sid","1"); session_start(); $_SESSION['test'] = "http://xxx.xx/test_a/"; header("Location:http://xxx.xx/test_b/2.php? .session_name().'='.session_id()."); exit; ?> >>test_b/2.php <?php ini_set("session.use_cookies","0"); ini_set("session.use_trans_sid","1"); session_start(); echo "セッションは" .$_SESSION['test']; ?> 試しに"echo"で表示させてみたところ、PCでは「セッションはhttp://xxx.xx/test_a/」と表示されるのですが、携帯(FOMA F904i)では「セッションは」しか表示されません。 どなたか、よろしくお願いします。

    • 締切済み
    • PHP
  • セッションが引き継げません

    PHP5.3 + Apache2.2 Windowsです。 IE7でページ遷移を行うと、セッションが引き継げず、新しいセッションが作成されてしまいます。(Chromeでは引き継げます) セッション保存フォルダに新しいセッションファイルが生成されていました。 以下ソースコードです。 $_SESSION['hogehoge'] = 'xxxx'; header("Location:sapmle.php"); sapmle.phpで$_SESSION['hogehoge']を参照すると、エラーになる。 エラー内容:Notice Undefined Index 'hogehoge' また、<a href="sample.php">次のページ</a> と記述したリンクをクリックしても同じエラーになります。 php.ini の use_trans_sid を Onにすると、エラーは出ません。 use_only_cookies を OnしてもOffにしてもエラーは出ました。 use_trans_sid が Offでも header("Location:sapmle.php?" . session_name() . "=" . session_id()); と書くとエラーは出ません。 エラーが出なくなれば良いので、use_trans_sid を Onにしたり、URLにセッションIDを付与すれば良いのかもしれませんが、 これらの処置はセキュリティ上良くないと聞いたことがあるので、どうするのがいいのかわかりません。 わかる人教えてください。よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPSESSIDについて

    ログインするサイト運用での話なのですが、 現在php.iniの設定は session.cookie_lifetime 10800 session.use_cookies On session.use_only_cookies On session.use_trans_sid 0 としております。 クライアントに保存されるクッキーには 思いっきり PHPSESSID a80385e3060e05f2eefaf6314f80902a のような形で書き込まれるのですがこれは ログインするサイトでは普通のことなのでしょうか? 良い悪いの判断がつかないのでどなたかお教えください m(_ _)m

    • ベストアンサー
    • PHP

専門家に質問してみよう