【PHP】セッションについて語ろう!【PHP】
■ このスレッドは過去ログ倉庫に格納されています
ブラウザを閉じたらセッションの効果がなくなるのって、 ブラウザを閉じることでクッキーを消しているからなのですね。。 知らなかったよーーーーうわーーーん なんだ実際に試してないのか 空論で語られてもな > 単純にセッションIDだけで管理 そりゃそうだ 物理的にネット上のIPを奪ってセッションIDを盗み見られたら終わりだね。 【セキュリティ上の注意】 php の セッションIDは、マイクロ秒単位の現在時刻 + ユーザーのリモートアドレス + combined-LCG(線形合同法自体は、疑似乱数生成方法としてはセキュアな方法ではない。) が種となっている。 セキュリティの専門家の高木浩光氏も 「phpらしい駄目っぷりだ。」 と批判している。 Unix 系 の OS ならば php.ini などで /dev/urandom を乱数の種に使うように設定しよう。 次のように記述すれば良い。 | session.entropy_file = /dev/urandom | session.entropy_length = 32 /dev/urandom では、周囲で発生するノイズ等の攻撃者に推測されない値をデバイスドライバや他の情報源から収集して、乱数の種として使用する。 これは、特殊なハードウェアが無い普通のPCでも使えて大変便利。 HDDの回転数、CPUの温度、ハードウェアの温度、マウスの動き、HDDの寿命、ハードウェアのエラーセクタ、HDDのSMART情報、周囲のノイズによる ハードウェア内部エラーなど、PCにはセキュアな擬似乱数としての使用に耐える攻撃者に推測されない値がいっぱいそなわっているのだ。 参考: http://tdiary.ishinao.net/20061120.html#p01 http://www.linux.or.jp/JF/JFdocs/Secure-Programs-HOWTO/random-numbers.html >>683 マイクロ秒単位の現在時刻 + ユーザーのリモートアドレス + combined-LCG(線形合同法自体は、疑似乱数生成方法としてはセキュアな方法ではない。) が種となっている。 ↑ それで充分。 /dev/urandom を乱数の種に使うように設定しよう。 ↑ 自己満足の世界 良い意味でも悪い意味でも、PHP程度のスクリプト言語に何を求めているの? と逆に問いただしたいものだ。 >>684 > 良い意味でも悪い意味でも、PHP程度のスクリプト言語に何を求めているの? php程度って…、そのphpは銀行のシステムや証券会社のシステムでも使われてるよね? まぁ大抵はaspだろうけどさ。 むしろPHPを使うのはこの程度の奴らかって思うけどな >>684 > 良い意味でも悪い意味でも、PHP程度のスクリプト言語に何を求めているの? session.entropy_file という設定があるからには、 PHPはそういう利用法も想定していると推測できるでしょ? 偉そうな阿呆の書き込みを見ると疲れるな・・。 だよな 1.設定が用意されている 2.PHPはLinux以外のOSも対象にしているのでデフォルトは違う 脳みそのある人間ならこう考えるのが普通だと思う俺の視点では >>>「phpらしい駄目っぷりだ。」 こいつ痛すぎるだろw で、設定変更すればよりセキュアな環境を提供できるにも関わらず 自己満足などと言い切るのは、とてもプロだとは思えないな > 2.PHPはLinux以外のOSも対象にしているのでデフォルトは違う そういや、Windows はセキュアな擬似乱数発生器持ってないのかなー Unix の /dev/urandom みたいなやつ 乱数発生は本来プログラミング言語レベルじゃなくて、OSがやるべき話 ハードウェアのノイズを取得するのはOSがやるのが一番効率いいし ちなみに、乱数の安全性ってのは馬鹿にできない話だよ 「ハッカーズ その侵入の手口 奴らは常識の斜め上を行く」 にもあるように、 それでラスベガスのカジノでぼろもうけしたやつもいるしさ、オンラインゲーム(MMO)なんかでも 時間種乱数のせいでクラックされてゲームバランス崩れた例もある >>689 > で、設定変更すればよりセキュアな環境を提供できるにも関わらず > 自己満足などと言い切るのは、とてもプロだとは思えないな 激しく同意 いや、自己満足だろ。 クライアントから見て理解できない部分へのこだわりっていうのは、所詮は自己満足。 自己満足と分かった上でやるかやらないかだけだ。 つか、素人のくせにプロ面して語るのが激しくウザい。 俺はsmartyで挫折してcakephpでも挫折した男だけど、プロ意識は持ってます。 そろそろ、セッション=PHPじゃないって気が付こうぜ。 つーか、単発スレ使ってるなよ。 携帯でセッション持たせようとするときって、どうやってる? >>697 携帯から取得できる一意キーを元に、アプリ側でセッションを作成してる。 >>698 レスありがとうございます。 それはPOSTの時にしか使えないと思いますが、GETでも必要な場合にはどうしていますか? >>699 キャリアによるわ。 au だと EZ番号 (サブスクライバID) を常に送信するのがデフォルトだし。 個体識別番号を常に送信するのはプライバシー上問題あるが、セッションCookieにすら対応していない 糞キャリアドキュモの場合には、URIにセッションIDいれるというセッション固定攻撃の被害を受ける可能性のある 脆弱な実装しかできない。 >>700 レスありがとうございます。 なるほど。ある程度覚悟してましたが、やっぱり面倒臭そうですね。 そもそもプロならphpなんて使ってないだろ。 やっつけ仕事向けのVB感覚が売りなのに、しっかり業務としてインターネットに公開している企業は痛い。 金無いのかよと(w あと、/dev/urandumは本当に乱数かどうか検証したのか? 疑似乱数って実装は、ありがちだぞ。リナックスは変に妥協してたりするし。 で、クッキー無しでセッションを安全に使う方法ってあるの? クッキーなんて偽造できるし、セッションIDぐらい総当たりで突破できるし。 セッションに何を求めてんの? 安全にしたいならSSL+ワンタイムパスででも武装しろよ >>702 俺、そのPHPで今年は年収2000万超えたけどねw 金あるところにはあるもんだ。いくらでも需要ある。 >>702 みたいな変なプライド持ってる開発者に限って、 ものを作らせるとインターフェースが糞で使い物にならない事が多いw >>702 > あと、/dev/urandumは本当に乱数かどうか検証したのか? > 疑似乱数って実装は、ありがちだぞ。リナックスは変に妥協してたりするし。 コード見ればわかるだろ 複数のハードウェアのノイズをもとに生産している乱数であって線形合同法とか時刻などは一切使ってない 全てのWEBアプリをCで書く人が居ると聞いて飛んできました おまいらのOSってphpで動いてるのか? 2000万のサイトってどこだよ。 個人情報対策できてるかどうかチェックしてやるよ。 ハードウェアのノイズって割と周期的だが。 >>702 >そもそもプロならphpなんて使ってないだろ。 ・・・ 今日の迷言 おまいらのOSってphpで動いてるのか? さて、次はどんな事書いて笑わせてくれるのでしょうか。この人は >>709 >2000万のサイトってどこだよ。 質問の意味が分からんしw 俺は個人で小さな会社経営してて、小回りの効く分色んな仕事をとってこれるってだけだよ。 会社経営者なら分かると思うが、この仕事は経費作るの大変でさ、売り上げのほとんどが利益になってしまうから、 自分や従業員の給料を歩合制にしてるんだよ。 このスレにはSOHOやってるやつとかも多いんじゃね?手挙げてみ。 俺の経験上、>>702 みたいな奴に限って、仕事任せると全然使いものにならないんだよなw >702 >あと、/dev/urandumは本当に乱数かどうか検証したのか? 「本当に乱数か」 「本当に乱数か」 「本当に乱数か」 「本当に乱数か」 「本当に乱数か」 「本当に乱数か」 「本当に乱数か」 あまりにも酷い無知加減ですね >>702 には乱数の定義から教えないと駄目って事だな > あと、/dev/urandumは本当に乱数かどうか検証したのか? > 疑似乱数って実装は、ありがちだぞ。リナックスは変に妥協してたりするし。 何度見ても笑えるw /dev/urandun はセキュアな擬似乱数生成器だ。 擬似乱数じゃない乱数なんてPCで生成するのは不可能だから もし、生成できるソフトがあるんだったら教えてくれ 絶対ないけどな 疑似乱数でなければ、セッションの意味ないだろ。乱数じゃないし。 総当たりされたら終わりだ 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に付加するしかねーだろ 恥を知れ いや、それはわかってるよ。携帯サイトとかもだろ? けど、上記に出てるようにセキュリティ的なリスクが高いじゃないか。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる