• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPSESSIDの表示)

PHPSESSIDの表示

このQ&Aのポイント
  • PHPSESSIDの表示について質問です。セッションを利用する際に、URLにPHPSESSIDが表示される理由と、表示を防ぐ方法について教えてください。
  • 質問者は自分の環境だけでなく、他のサイトでも同様の現象を確認しているようです。例としてサイバーエージェントの会社サイトを挙げています。
  • リファラーや検索エンジンに乗っ取られることがセキュリティ上の問題になる可能性があるため、表示を防ぐ方法を求めています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

GETでのセッションIDの受け渡しを避けるには、session.use_only_cookies = 1にして使うと良いと思います。但し、COOKIEを使えないクライアントやロボットなどの場合はセッションが利きませんので注意して下さい。 PHPのセッションを使うとそんなこんなで色々な制約が出てきちゃうので、僕は最近は使わなくなりました。オリジナルの暗号ルーチンでアクセスの同一性だけを次のページに受け渡しをしています。セッション変数が使えませんが、色々な方法で何とか回避してます。

SHlVA
質問者

お礼

回答ありがとうございます。 COOKIEが必須となると、拒否している人を弾いてしまうので、はずすのは難しいです。 ご自分でセッションと同じような機能をつけてるというわけですね。すごいですね。 残念ながら私にはまだそこまでの技術力がないです。 でも、おっしゃるとおりすでにオープンになっているセッション機能よりも独自のシステムのほうがセキュリティ的には強いのは確かですよね。 http://search.fresheye.com/?kw=%B5%E1%BF%CD&dom=www.qjinweb.com&rt=nf_s わざとなのかわかりませんが、このようにPHPSESSIDを含んだURLが検索結果に出ることが恐ろしくて・・・

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.2

>COOKIEが必須となると、拒否している人を弾いてしまうので、はずすのは難しいです。 そうなんですよね。でもロボットはcookieなんて使いませんので、これを外さない限りはロボット巡回の際セッションIDが付加されてしまいます。 オリジナルのはセッション機能という程ではありません。アクセスの同一性を受け渡しているだけです。セッション変数など使えませんから、次のページに渡さなければならないパラメータは全部GETなどで渡さないといけないので設計が大変ですよ。でもメリットデメリットを考えて、PHPセッションを使うよりはこちらの方が良い、という判断です。

SHlVA
質問者

お礼

そうですよね。ロボットにもPHPSESSIDが発行されてしまうんですね。とはいえ、ほとんどのサイトでセッション管理してると思いますが、検索結果にPHPSESSID=xxxxxっていうURLがでることはあまりないですよね。 なんだか不思議です。 session_trans_cidを使う以上、 表示上、 一番最初のセッション開始時にURLにPHPSESSIDがついてしまうのはしょうがないんですかね。 2ページ目からはシステム的にはついているけど、URL上に表示させないようになってるということですね。 リファラーにもPHPSESSIDは省かれたものがいってるんですよね。 かわりの機能ができればと思うのですが、いろいり試行錯誤してみます。 ご回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • session.nameについて

    PHPのセッションの設定についての質問です。 セッションの値がPHPSESSIDだと長いので、短くしようと思い、 ini_set("session.name", "sid"); と設定しました。 設定を確認すべく、<?=session_name()?> で表示すると、ちゃんと sid となっているのですが、 <?=SID?> でセッションと一緒に表示すると、なぜか PHPSESSID=XXXXXXXXXXXXXXXXXXXXXXX というふうに、名前が変わってくれません。 実際には、リンクの後ろに自動でセッションが付く 機能(session.use_trans_sid ですかね)を利用 したいので、自動でセッションをリンクにつけて 表示しているのですが、その際にもやはり、元のまま PHPSESSIDと表示されてしまう状況です。 ※ちなみに、php.ini はいじれないので、PHPファイル  の冒頭で、ini_setをしている状況です。 どなたか解決策をご存知の方がいましたら、教えて いただけますか? よろしくお願いします。

    • ベストアンサー
    • 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
  • これまで遷移してきたサイト内のURLを表示する方法について

    これまで遷移してきたサイト内のURLをHTMLに表示したいと思いましたが、 直前のURLは表示できるものの、2つ以上前のURLを表示する事ができませんでした。 何らかの方法で、アクセス毎にセッションの配列に直前のURLを追記して、 ページ間の遷移の際その情報を保持し続けられれば解決すると思うのですが、 どのようにコーディングすればよいかわかりませんでした。 その為、何らかのアドバイスを頂ける方がいらっしゃいましたら、ご教示の程よろしくお願いします。 【ソース(index1.php, index2.php, index3.php, index4.php, index5.php共通)】 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>1ページ目</title> </head> <body> <p> <?php if (strlen($_SERVER["HTTP_REFERER"]) != 0) { echo "リンク元は"; echo $_SERVER["HTTP_REFERER"]; echo "です。"; } ?> </p> <p><a href="index1.php">リンク1</a></p> <p><a href="index2.php">リンク2</a></p> <p><a href="index3.php">リンク3</a></p> <p><a href="index4.php">リンク4</a></p> <p><a href="index5.php">リンク5</a></p> </body> </html>

    • ベストアンサー
    • PHP
  • ランダム(不規則)な文字列の置換えについて

    初めて投稿させていただきます。 文字列置換について、色々と調べたのですが全く解決しなかったのでこの場を借りてご質問させて頂きます。 早速ですが記述から記載させて頂きます。 $str = file_get_contents('http://example.com/'); $replaced = str_replace("index.php?ref=123abc", "index.php?ref=456def", $str); echo $replaced; このように一定の文字列に対しては置換ができたのですが、 index.php?ref=123abc の箇所が index.php?ref=123abc&PHPSESSID=qazwsxedcrfvtgbyhnujmikolpqazwsx のようにPHPSESSIDのセッションID(毎回変わるランダムな32桁の文字列)が付いてきた場合に index.php?ref=456def に置換える方法がわかりません。 &PHPSESSIDの文字列の先頭部分から右に43文字目※(&PHPSESSID=の所で11文字)+(IDの所で32文字)※までを index.php?ref=456def に置き換える方法や 初めからPHPSESSIDのセッションIDの部分を表示させない方法など ここ数週間色々考えてみましたがどうしてもわかりませんでした。 PHP初心者ですので、なるべくわかりやすく教えて頂けると幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • 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
  • 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
  • Cookie非使用のセッションについて

    携帯サイトを作成しているので、URLに直接IDを埋め込む形でセッションさせたいのですが、うまくいきません。 レンタルサーバ(heteml)には『php.iniの設定-session.use_trans_sid』が用意されているのですが、クッキー環境であればそちらを優先したいので、携帯サイト向けのファイルのソース上で何とかしようとしている所です。 そんな訳で、サーバーの『php.iniの設定-session.use_trans_sid』はOFFにした状態で **************a.php********************************** <?php ini_set("session.use_cookies","0"); ini_set("session.use_trans_sid","1"); session_start(); $_SESSION["test"] = "テストです"; echo "<a href=\"b.php\">セッションテスト</a>"; ?> ***************************************************** **************b.php********************************** <?php ini_set("session.use_cookies","0"); ini_set("session.use_trans_sid","1"); session_start(); echo $_SESSION["test"]; ?> ***************************************************** と、したのですがうまくいきません。 ini_set関数の使い方が間違っているのでしょうか? また、手動でIDを埋め込むやり方でも構いませんので、 ご存知の方いらっしゃいましたら宜しくお願いします!

    • ベストアンサー
    • PHP
  • ドコモのセッション機能について

    iモードHTMLシュミレータIIを使用して携帯版のサイトを作成しています。 セッションがうまく動いていないような感じがします。 画面遷移した後に”$_SESSION”の中身がないようです。 私の確認方法が悪いのでしょうか? 【環境】 ・iモードHTMLシュミレータII ・XAMPP Windows版Version 1.7.1 ・C:\xampp\php\php.iniの設定 ; This option enables administrators to make their users invulnerable to ; attacks which involve passing session ids in URLs; defaults to 0. session.use_only_cookies = 0 ; trans sid support is disabled by default. ; Use of trans sid may risk your users security. ; Use this option with caution. ; - User may send URL contains active session ID ; to other person via. email/irc/etc. ; - URL that contains active session ID may be stored ; in publically accessible computer. ; - User may access your site with the same session ID ; always using URL stored in browser's history or bookmarks. session.use_trans_sid = 1 【index.php】 <? session_start(); echo 'use_only_cookies = ' . ini_get('use_only_cookies') . "\n"; $_SESSION["xxx"] = "1234567890"; $login_url = "main.php"; header("Location: {$login_url}"); ?> ⇒”use_only_cookies =”のみ表示 【main.php】 <? session_start(); print_r($_SESSION); echo 'sssion.use_trans_sid = ' . ini_get('session.use_trans_sid') . "\n"; ?> ⇒”Array()”のみ表示 ⇒”sssion.use_trans_sid=1”表示 何か設定が悪いのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • ログイン情報が混ざってしまう

    同じwebサーバーにディレクトリ分けして2つのサイトを運営しようと思っています。 2つのサイトはphpで動いており、プログラム的にはほぼ同じ内容です。 サイトにはログインフォームがありログインして操作を行っています。 タブブラウザ(IE7,やfirefox)を使用して2つのサイトを同時に別タブに開くと上手く動きません。 (ログアウトしてしまったり、Session情報がどちらかのデータに上書きされているような挙動です。) 自分なりに色々調べてみたのですがSessionIDが2つのタブで同じになってしまっていることが分かりました。 (SessionIDは固定値ではなくphpに自動取得させています。なので、ブラウザを一回閉じてから開いた場合はおかしな挙動はしません。) 以下セッションの部分のコードです。 if(isset($_REQUEST['PHPSESSID'])) { session_id($_REQUEST['PHPSESSID']); //Setting the same session id to Forums as in CRM $sid=$_REQUEST['PHPSESSID']; } session_start(); ブラウザを初めて開いた場合、$_REQUEST['PHPSESSID']は空なのですが、session_start();をすると別タブでも最初から$_REQUEST['PHPSESSID']に値が入ってしまっています。(この値が重複しています。) この状況を何とかするにはどうしたらいいでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 携帯サイトで勝手にセッションIDを埋め込まれた場合どんな被害が考えられますか?

    あるASPを使って携帯サイトを作成したのですが、 ソースの一部が何者かに勝手に書き換えられてしまい、 <a href="?PHPSESSID=****&PHPSESSID=****&PHPSESSID=****&PHPSESSID=****&PHPSESSID=****&PHPSESSID=****&PHPSESSID=****&PHPSESSID=****&PHPSESSID=****">テキスト</a> となっていました。 ※****にはそれぞれ異なるセッションIDが書かれていました。 このリンク先に行くと、このページのURLにこのセッションIDが埋め込まれてしまうのですが、 これによってどんな被害が考えられますか? どのような意図でこのような書き換えを行ったのでしょうか? 教えて下さい。

    • 締切済み
    • PHP