【PHP】セッションについて語ろう!【PHP】
■ このスレッドは過去ログ倉庫に格納されています
ブラウザを閉じたらセッションの効果がなくなるのって、
ブラウザを閉じることでクッキーを消しているからなのですね。。
知らなかったよーーーーうわーーーん 疑似乱数でなければ、セッションの意味ないだろ。乱数じゃないし。
総当たりされたら終わりだ
phpで稼いでるのってウェブデザだろ? プロじゃないし。 どうでもいいけど>>702はVBの業務アプリケーションの多さを知らないのか?
C/S廃れてからは流石にあんまし見ないけどさ。
ちなみに今業務で使ってるのもPHPです。お手軽さが売りです。
本当にどうもありがとうございました。 VB.NETなんてインターネットに公開してたらすぐやられるけどな(w
phpサイトも個人情報漏れまくりだ。セッションも乗っ取り放題。 VB.NETの話と違うんじゃない
バック側の管理でVB使ってるところは沢山見たことあるぞ
非.NET時代のASPでも言語はVBが使われてたりしたけどな 言語が何であろうが、それで金稼げば一応はプロ。
年収1000万以下の奴はカスだが。
どんなに素晴らしい能力があっても、ウンチクたれるだけで金稼げ無い奴は素人。 プログラムやHTML書けるけど、人と話せない引きこもりって居るよな。
買い叩かれて氏ねば良い。 >>728
そういうことはまずは就職してからな。
みんなニートの妄想に付き合う程暇じゃないと思うよ あの、お忙しいところ、質問があります。
インターネットオプションで、クッキーの設定を行っているのですが、
クッキーが巧いこと、保存されません。
具体的には、プライバシー設定の詳細で
「自動Cookie処理を上書きする」のチェックをon,off両方を試し、
onの場合、どちらも受け入れるを選択、常にセッションCookieを許可するのon,offの
全てのパターンで試しました。
しかし、Cookieが保存されませんでした。
こういうことってあるのでしょうか?解決方法を教えていただける方いませんか?
serversideでちゃんとクッキーが発行されているのか? 別のクライアントブラウザからは、クッキーの発行が確認できました。
ブラウザのセキュリティーレベルの設定等で受け入れられない状態とか 世の中にはクッキー非対応の環境も有るし。
ひたいおうでもうごくようにしとけ。 session.gc_maxlifetimeってデフォルトが24分(1440秒)なのは、実装した人の勘違い?
ちゃんと意味があるの?
というのは、session.cache_expireが180分(3時間)になってても、実際は24分で切れちゃうでしょ?
この辺を論理的に説明できる偉い人の登場を期待アゲ ごめん、sageた・・・
ついでに、このガーベージコレクションだけど、
/htdocs/を1440秒
/htdocs/admin/を3600秒に.htaccessなんかで変更した場合、(set_iniでもいいけど)
変更したディレクトリはちゃんと時間が反映されるんでしょうか?
(自分で試せば分かるだろって?そうですね・・・試してみます) >>741の補足です。
なんで1440秒が勘違いかと思ったかというと、session.cache_expireが分指定だから、
session.gc_maxlifetimeも分指定の値になっているのかと。
つまり、GCは24時間毎に行う指定になっている?
でも、24時間って長すぎるよなぁ・・・
(つうか、この場合のGCってデフラグと同意だろうから、24時間サイクルじゃ頻繁すぎるのかなぁ?) >>741
とりあえず>>652あたりを読んでから論理的な質問よろ。 >>741
まず、じぶんの環境ぐらいかけ。
話はそれからだ。 疲れてる?
憑かれてる?
突かれてる?
吐かれてる? >>746
「キャッシュ」がなんなのか理解してるか?
理解してるなら>652で十分な回答になるはずなんだが。
>>744
自分のレスを参照されてうれしかった。ありがとう。 >>750
君はその知識で実際に運用して、推測通りにセッションを
コントロールできてるか?伺いたいものだ。
例えば、セッション24時間にしょうとして、実現できているか?
できていないはずだ。自分で推測することは科学といわない
普遍的な(と思われる)手段で反証して確かめることが「科学的」なんだよ。
それと、デフォルトのmaxlifetimeが1440秒ということについての
ご意見をお伺いしたいのだが? >>751
それは自然科学の考えだろ。
今相手にしているのは人工物で仕様が示されている。ソースコードもある。
デバッグを行う人間ならまだしも、利用者がその挙動確認をするために演繹を行うのは甚だ筋違いだ。
>それと、デフォルトのmaxlifetimeが1440秒ということについての
>ご意見をお伺いしたいのだが?
http://www.zend.com/lists/php-dev/200201/msg00239.html ×演繹を行うのは甚だ筋違いだ。
○演繹や帰納に基づく実験を〜 質問です
session_regenerate_id() でID再生成を行うと、
セッションの有効期限(gc_maxlifetime, cookie_lifetime)のカウントは
リセットされるんですか? マニュアル嫁、簡易なスクリプト書いて検証しろで片付くような質問は、なぜか延々繰り返される不思議 php内で
GCが走ったか(走るか)否かを検出する方法ってある?
あとGCが走った時ってレスポンスに差あるの?
大量のファイルを削除するのはそれなりに負荷があると思うんだけど >>758
無い。
GC自体を自前で実装することはできるから、
それでどうにかすることはできる。 なんかPHPのセッションて糞すぎねーか?
パーセントでgcの割合指定するのも
アクセス数に左右されるおかしな仕様だし
微妙に挙動が良くわからんし。
PHP氏ね >>760
文句あるなら使わなきゃいい。
技術力あるならextension作ればいい。 >>760
そういう人の為に、自前のセッション処理を簡単に組み込める関数まで用意されてるのにw セッション使うより
会員制サイトならユニークIDにしたほうが効率よくない?
セッションだと
セッション→ID&PASS→DBより一致するデータを取得
ユニークIDだと
ユニークID→一致するデータを取得
GETにでも入れておけばいいんじゃね? すみません。根本的な質問なのですがセッションを使うのにライブラリーが
いりますか?PHP5.2.2なのですがsession_start()を入れるだけで
PHPが動かなくなります。//でコメント扱いすると動作します。
ちなみにsession_start()のスペルミスなどではございません。 >>765
何かしらの出力の前にsession_start()してみろ <?php
session_start();
としています。error_reportingが非表示?になってますので画面が白く
なるだけでエラーの内容はかえってきません。
サクラの専用サーバー借りたのですが初期設定でGDも使えないので
そういうのがセッションにもあるのか?と思いましてここで聞いています。 エラーログ見るかdisplay_errors設定すればいいじゃん。
それかphp -iかphpinfoでsessionの項目見てみたら?
何で専用サーバなんて借りたんだ。 レンタルでやっていたのですが負荷が高くて
専用じゃないとやれなくなりました セッションハイジャックってどういう時に起こりうるの? >>771
1.セッション付きのURLから外部のサイトに飛びました
2.外部サイトの鯖ログ(もしくはアクセス解析)に、セッション付きのURLが残りました。
3.その外部サイトの管理者がURLにアクセスしました
セッション管理法が糞なら、こんな事でハイジャックされてしまう事もあるわな。
非常に低レベルなお話だが 2.外部サイトの鯖ログ(もしくはアクセス解析)に、セッション付きのURLが残りました。
↑これは、リファラとしてって事な。 >>771
実装次第だけど、セッションIDがどこに保存されているかは大体目星が付くよね?
それをどうにかして奪おうと頑張る人がいるんだよ。 >>773
それってURLがPHPSESSIDってなっているサイトだよね?
たまに大手サイトであるけど、ほとんどセッションはクッキーで保存
するタイプじゃないの? ブラウザ側でクッキーが無効だったらURLに付加するしかねーだろ
恥を知れ いや、それはわかってるよ。携帯サイトとかもだろ?
けど、上記に出てるようにセキュリティ的なリスクが高いじゃないか。 PCサイトではCookie必須とし、session.use_trans_sidはOFFにする。
携帯サイトの場合は、最低限session_nameはデフォルト以外を使う(EZwebを除く)。
ってことでOK? アマゾンのあれもセッションじゃん
セキュリティもへったくれもないような >>778
だから、セッションIDが漏れても大丈夫なように対策をするわけだ。
非常に低レベルな対策としてはIPアドレスを使う方法だが、
これは例えばDoCoMo携帯みたいに接続ごとにIP変わる場合には使えねぇな。
DoCoMoはリファラ吐かないが、auなんかリファラ吐くから簡単にセッションIDは漏れる。
だから、例えばauの個体識別番号なんかを使って、万が一セッションIDが漏れても
大丈夫なように対策をするわけだろ?
でも個体識別番号の通知をオフにする設定も出来るわけで、そこら辺どう対策していくかとかさ。
それ以前に、最近のau機種の大半ははクッキー対応してるけどw
俺の管理しているサイトの鯖ログには、
mixiのセッションIDがくっついたリファラや、
YahooメールのセッションIDがくっついたリファラがたくさん残ってるが、
だからといってそのURLにアクセスbオても無駄だわbネ。当たり前。 >>781
mixiはたぶん、毎ログインごとにセッションIDをDBに保存していると思う。
だから、1人のユーザがログインしている時だけ有効なセッションIDを
利用するから、二度と同じセッションIDは使えないわけで、
それがセキュリティ対策になっているのだと思う。
と言ってもOpenPNEのソースをみた印象なので、正しいかどうかはわからないが。 すみません質問です!
localhost/test/sessiontest/index.php ←ここでsession_start()してprint session_id(); print session_name();
localhost/test/index.php ←ここでsession_start()してprint session_id(); print session_name();
すると両方とも名前はPHPSESSIDなんですがIDが違ってて、sessiontest/index.phpでセットした値が上の階層で使えません。
下階層でセットしたセッション情報って上の階層で拾うにはどうすればいいのでしょうか。 session_set_cookie_params セッション管理のヘルパとかライブラリってありますか。
軽量な奴で。
[2ch公式広告]
一瞬、ハーバーライフと間違えるところだった。。
違うよ、コレは。
ヤフオク関連の最強情報
これを知らずして、ヤフオクで稼ぐことは出来ない。(キッパリ)
http://2ch2.net/.l?=jd2e いや、つうかさ、
>セッション管理のヘルパとかライブラリ
とかって、何に対してして欲しいのさ?
Perlやってた俺としては、PHPは十分便利だと思うけど? クッキーは1024byteまでしか使えないんじゃなかった? 4096bytes/cookieで特定のホストかドメイン毎に20cookieまで。
さらに携帯では制限付くよ。
というかDoCoMoがいつまでもCokkie非対応で
そろそろ機能が付くという話も聞いた気がしたがサイトに情報なかったな。
最近、セッションが勝手に切れるんだけど、
同じ現象を経験した人いる? >>798
俺が作ったショッピングサイト。
ショッピングカートの中身が消えるという現象が起きてる。
タイミングは不明。
商品を10、20個入れても消えない時もあるし、3個で消えた事もある。
セッションが破棄されるタイミングがさっぱりわからないんだ。 hpのセッション管理について、動作が不明な点があります。
(現象)
1. ログイン実行、ログイン成功ならばクッキー変数にセッションIDを設定します。
2. しばらくログインしたままで画面を開いていました。
ガベージコレクションが実行されてプログラム内で設定したセッション変数が削除
されました。
3. ログアウトの処理を実行せず、画面を閉じて終了しました。
明示的にsesson_destroy()は実行していません。
4. 再度ログインしました。その後設定されているセッション変数を確認したところ、
上記1.で設定していたセッションIDと同じ値が設定されました。
2.でガベージコレクションが実行されてセッション変数が
削除されたはずなのに、再度ログインすると同じ以前と同じセッションIDとなる
理由がわかりません。
セッションIDはガベージコレクション実行後でも削除されないのでしょうか。
PHPでセッションIDが変更されるのはどのようなタイミングなのでしょうか。
もしかすると私のphpのセッションの仕様理解不足な点があるかもしれません。
わかる方がおりましたら教えてください。 すみません、1行目入力ミスしました
× hpのセッション管理について、動作が不明な点があります。
○ phpのセッション管理について、動作が不明な点があります。
>803
>ガベージコレクションが実行されてプログラム内で設定したセッション変数が削除されました。
何かでちゃんと確認した?ガベージコレクションがセッションを軒並み
削除してしまうなんてことはないはずだけど 質問なんだけどauサイトでのセッション管理はURLにセッションID埋め込む方法でOK?
docomoとソフトバンクは上手くセッション管理できてるけどauだけ何故か上手くいかなくて。。 >>803
セッション固定脆弱性と同じ原因でしょ。
この場合はセッションIDが悪意を持つだれかが用意したものではなくて、
クッキーや履歴の一部(クエリ文字列でセッションIDを引き回した場合)に古いセッションIDが残っていて、それが利用されたと考えられる。
この動作には害はないけどセッション固定攻撃されると危険なので対策を施した方がいい。
>>806
auはクッキー使える PHPに限ったことではないんですが、タブブラウザとかで1つのwebアプリに
ログインした状態でもう一つタブを作ると、同一セッションになってしまいますよね。
これを回避するブラウザ、もしくは対策はないでしょうか。
(全てのページのURLにセッション名を埋め込むとかは面倒なのでしたくないです)
セッションの仕組みを考えれば分かる事だろう?勉強不足。 あーはいはい。余程悔しかったんだね。
そんな書き込みしてる暇あったら少しはお勉強しなよ僕^^
まずは、日本語のね(笑) windowsで開発するときのセッションファイルってどこにあるん? XPだと
C:\WINDOWS\Temp
ほかの環境は試したことないからわからん //$_SESSION['abc']; は前ページで123を代入
//ここから
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time() - 42000, '/');
}
session_destroy();
echo $_SESSION['abc'];//123
と表示したいのですが何か方法はないのでしょうか?クッキーとか使わずに。 要するにセッションを破棄した後で、そのセッションに入っていた変数を参照したい、ということなら、
$_SESSION = array();
の直前に
$temp = $_SESSION;
とかしておいて、最後の
echo $_SESSION['abc'];
の代わりに
echo $temp['abc'];
とかすればよいのでは?
はずしてたらスマソ
質問です。mixiってSSLじゃないけど大丈夫なんですか?
これが、楽天やアマゾンだと
普通の商品ページ→http
しかし、購入後の清算ページ OR 会員登録 OR 会員登録変更などは
全部httpsです。
これって、とりあえずセッションIDを変えてるってことですよね mixiなんてプレミアムの申し込み以外は個人情報入力するわけでもないのにSSL化する意味あるのか
2ちゃんで名前欄にコテハン入力するのと同じレベルだぞ PHP.iniのsession.save_handler に、独自のセッションハンドラを定義する
方法はあるのでしょうか?
セッション変数をDBに格納したいので独自にハンドラを書きたいのですが、
事情によりスクリプト内でsession_set_save_handler関数は使えないんです。 ■ このスレッドは過去ログ倉庫に格納されています