X



Session管理してる?
0001名無しさん@お腹いっぱい。2001/05/23(水) 23:24ID:ZWP7e.Mk
PHP3だとSession使えないから、id&passをhiddenで吐き出している。
DBで一意のsessionidを作ってやりゃーいいんだけどExpireとか
めんどくさい。

ASPやPHP4ならSession管理楽だよね。
0003名無しさん@お腹いっぱい。2001/05/24(木) 01:17ID:???
厨房質問でごめんなさい。

>ASPやPHP4ならSession管理楽だよね。
ASPやPHP4が、自分に代わってhiddenのパラメータなり(POSTの場合)、
GETパラメータなりを管理してくれてるのでしょうか?
tcp/ipの接続を持続してるとか、勝手にクッキー使ってるってわけでは
ないと思うのだけど、どうやってSessionを実装しているのかなあ、と疑問
に思ったので。
0004名無しさん@お腹いっぱい。2001/05/24(木) 10:42ID:???
>>3
ASPはcookie投げてるという話を聞いたなあ。
僕はperl + Apahce::Session with cookie ばっかだから知らないけど。
0005ナナシファン2001/05/24(木) 10:55ID:X3JWHld.
>>3
デフォルトで勝手にクッキーを使うよ。クッキーを使えない端末の
ときは、configureの時に--enable-trans-sidしてあれば
全部のリンクにsession idをつけてくれる。
ただ、<a href=だとつくんだけど<a taskだとだめなんだよなぁ〜
というわけでHDMLの場合は自分でつける必要アリ
0006俺もナナシファンだったり2001/05/24(木) 12:10ID:VUBEv.zk
>>4
Apache::Sessionってどうよ?
セッションのガベージコレクションの機能とかないんじゃなかったっけ?
俺は1リクエスト毎にデータベースに書きに行くのがすごくうざくって、
ちょっと触っただけでやめちゃったけれど・・・
000732001/05/24(木) 15:32ID:???
Session管理は結局どれも内部でクッキーかGET(orPOST)パラメータですか。
そりゃそれ以外ないよな。

あとは携帯電話の固体IDだけど、503iから使えるようになった奴ですが、
210iではどうだろう?
00084じゃないけど2001/05/24(木) 20:26ID:CDMAiqEA
>>6
セッションタイムアウトは自動でやってくれないね。
タイムスタンプのフィールド用意しておいて、cronで削除が一般的かな。
mod_perl下で使えば、かなり使えると思う。
000942001/05/25(金) 03:05ID:C8bJzxHM
>>8
言う事なくなっちゃった(笑)
そういや、mod_perlのスレないね...。ま、perl板でも繁盛してなかったけど。

>>7
あと、URLにセッションIDを埋め込む方式があるね。
携帯とPCを両用したいときとかによくつかってます。
001032001/05/25(金) 11:07ID:y6UssZUU
>あと、URLにセッションIDを埋め込む方式があるね。
>携帯とPCを両用したいときとかによくつかってます。

PATH_INFOですか?
それもGETパラメータ(URL)の一種だとは思いますが、
QUERY_STRINGと比べて特に携帯だからPATH_INFOを使う
意味も無いような、、、
逆にPATH_INFOでも使う分には同じなのでどちらでもいいし、
QUERY_STRINGやPOSTパラメータはシステムによっては
自動的に解析される部分に入ってしまうだろうから、それらの
仕組みとぶつからないというメリットかな?
0011名無しさん@お腹いっぱい。2001/05/25(金) 14:35ID:jbE0alI6
PHP4セッション管理の詳しく説明してる
サイトってありますかねー?
0014ナナシファン2001/05/29(火) 12:40ID:S1fqIqMg
>>13
うぉぉぉ!まさにコレ!
http://www.phpbuilder.com/columns/ying20000602.php3?print_mode=1

MySQLでセッション管理したかったんだよねーー!!ロードバランサは
(いいものになると)結構お値段が張るので、TurboLinux ClusterServer
とかを使ってWWWのクラスタリングをしたかったんだけど、セッションを
どーしよーかと途方に暮れてたところでした!
電動ナナシさん、サンクス!これからも有益な情報をお願いしますです!
0015名無しさん@お腹いっぱい。2001/05/29(火) 18:09ID:i2JkDuIg
セッション管理はPostgresでは難しいのかー?
MySQLの方がいいのかな?
0016名無しさん@お腹いっぱい。2001/05/29(火) 18:57ID:oi4kyUtI
>>10
PATH_INFOじゃなくても、mod_rewriteで
ごにょごにょやる手もあるよ。環境変数として渡したり。
0017名無しさん@お腹いっぱい。2001/05/30(水) 10:48ID:???
>>15
webのセッション管理にDBMSって関係有る?
PHPのインターフェースの部分が、DBMSによってセッション管理が
用意されている/いないの差があるということかな?
おれはPHPでないので知りませんが。
0018電動ナナシ2001/05/30(水) 15:13ID:???
セッション管理は頻繁に発生する、トランザクションのような一貫性保証は
不要、ということで、PostgreSQL のような重装備の RDBMS よりも MySQL の
ような軽くて高速なデータベースが向いているということでしょ。

すでに PostgreSQL があってそれを使いたいということなら、別にそれでも
いいでしょ。セッションハンドラは別途書かないといけないというのはどの
RDBMS でも一緒。
0019名無しさん@お腹いっぱい。2001/05/31(木) 12:55ID:6kiiO4aQ
セッション管理ってなんで必要なの?
0021名無しさん@お腹いっぱい。2001/06/01(金) 10:08ID:lW7xbRZQ
PHPLIB+MySQL+PHP3.0.9でセッション管理してます。ただ、レンタル
サーバーなんで都度requireしなければいけないのですが...
しかし、国際版PHPじゃないのがつらすぎる。Perl+DBIのほうが開発早かった
かもしれんッス
0022電動ナナシ2001/06/01(金) 17:50ID:???
>>19
常に必要ってわけじゃない。
Web ページ間で変数を引き渡す手段が必要なときに有用ってだけ。

>>20
3.0.9 って思いっきりセキュリティホールがあるじゃん。
バージョンあげてもらうついでに国際化版にしてもらおう。
それが無理なら Perl を使ったほうがマジでいいぞ。
0023名無しさん@お腹いっぱい。2001/06/11(月) 11:59ID:BchxEcFA
ちょっと質問。
よくユーザ登録のページで情報を入力しsubmitして
確認画面がでますよね。でソースを見ると入力内容をHidden
で渡してるものもあれば、Hiddenを使用していないものもあります。
Hiddenを使用せず渡すのは、s_id見たいなものを
をキーにして入力内容をDBに毎回insertしてページ間でデータが
渡っているのでしょうか?それとも別の方法があるんですかね?
疑問だったので・・・。
0024sage2001/06/11(月) 12:12ID:???
>>23 cookie
0025sage2001/06/11(月) 12:11ID:???
>>23 cookie
0027名無しさん@お腹いっぱい。2001/06/12(火) 12:44ID:???
cookieに依存すると、専用端末や携帯電話やcookie offに対応することに
なったときに面倒っすよ。趣味でPCだけ相手にしているときにはいいけど。
0028名無しさん@お腹いっぱい。2001/06/12(火) 13:16ID:???
>>27
ソース見てhiddenがないのはどうなってるのかって聞いたから例としてcookie
と言ったまで。

そりゃ状況によって方法は変えますよ、わたしゃ。
0029名無しさん@お腹いっぱい。2001/06/22(金) 12:49ID:yGqQ.0ks
age
0030殿堂ナナシ2001/06/22(金) 22:26ID:???
>>23
Servlet ではセッションはサーバのメモリに保持する。
ファイルやDBはオーバーヘッドがあるのであまりないね〜。
PHP4 はファイルですよね(よく分からんけど)

>>24
クッキーに情報自体を保持するのは、一般的?に
セッション管理とは言いにくいような。。。
# セッションIDは別
0032殿堂ナナシ2001/06/22(金) 23:21ID:???
>>31
怒ってる〜?
そうだね。レスポンスヘッダに設定する有効期限を無しに
すればセッションが続く限りクライアントが情報を保持するよね。

んで、そのセッションクッキーってのを使うと
セッション管理してるということになるの?
hidden と同じでクライアントに投げたら投げっぱなしなので
管理とは言いがたいような気がします〜。

毎回切断される HTTP で継続して情報を保持するために
サーバでランダムな ID を発行し、それをキーにクライアントと
やりとりを行う。
それをセッション管理と言う。
0034名無しさん@お腹いっぱい。2001/06/23(土) 13:09ID:???
どっちにしてもcookie使わない方法はないと思うが。
もちろん、擬似的なセッション維持だとは思うけど。
データをどこにもつかって事だと思うけど、
cokkieはドメイン毎に4Kまでの制限があるから、
ふつうサーバーでデータは保持する。
0035殿堂ナナシ2001/06/23(土) 22:56ID:???
クッキーだけでなく、サーバで発行したランダムなIDは次の
いづれかでやりとりされる。

・クッキー
・get リクエスト
・put リクエスト

このIDを普通はセッションIDっていうよね。
最近の Java や PHP では意識はしなくてもいいけど。
0037名無しさん@おへそいっぱい。2001/06/24(日) 12:09ID:???
URL Rewrite を忘れてる。<A HREF="/a/b/c;98A30x7"> みたい
なの。現行のステートマネージメントは

 ・Cookie の受け渡し
 ・HIDDEN フィールド
 ・URL Rewrite

で行われている (Servet の話だけど)。
ちなみにセッション ID がランダムに振られるシステムは設計が
おかしい。
0038殿堂ナナシ2001/06/24(日) 21:36ID:???
間違えた。。。 put は post です。。。

・クッキー <- Cookie の受け渡し
・post リクエスト <- HIDDEN フィールド
・get リクエスト <- URL Rewrite
私の表現がおかしい〜?

URL Rewrite は クッキーが使えないときにAP サーバが
セッションIDを URL に Rewrite するっていうものだよね。
最近、セキュリティ的に問題があるので使ってはいけないというのが
良く言われてるけど。

セッションIDがランダムに振られるのがおかしいというのはなぜ〜?
最近はAPサーバにセッション管理が実装されてるから
あまり意識してないもので。。。
一意性の問題?
0039名無しさん@おへそいっぱい。2001/06/25(月) 00:25ID:???
そう、一意性の問題。普通はシーケンシャルに採番して一意性を
維持したままシャッフルすると思われる。ちょっと揚げ足を取っ
てみただけ。

現行のステートマネージメントメカニズムは、どの方法も SSL と
組み合わせないとセキュリティ的に問題ありだね。というか
そんなの Web の常識だったはずなのに、なぜ突然ひろみちゅが
騒ぎ始めたのか分からんよ。

URL Rewrite/HIDDEN フィールド
 ソースを見れば一目瞭然。URL 欄にも表示される。ジャンプ先
 サイトでは Referer ヘッダで参照可能 (ブラウザの種類と
 バージョンにもよる)。自サイトを SSL 化しても Referer
 ヘッダは漏れてしまうかも (なりすまし接続は無理だろうが)。

Cookie
 丸見えでない分 URL Rewrite/HIDDEN フィールドよりまし
 だが平文であることには変わりない。プロキシサーバなら
 余裕で盗める。期限付きのはファイルで残る。

# 昔、クライアント側の IP アドレスを使ってセッション ID
# にハッシュかければセキュリティもバッチリでは? と発明
# しかけたが、程なくプロキシの存在を忘れているのに気づ
# いた。
0040名無しさん@お腹いっぱい。2001/06/25(月) 15:58ID:???
>>30
クライアント側のクッキーにはIDのみで、
セッション情報はサーバ側に保存されるので
セキュリティ的には問題ない
と、どっかで読んだ覚えがあるんですが。
0041402001/06/25(月) 15:59ID:???
>>30>>39の間違いでした。
0042名無しさん@おへそいっぱい。2001/06/26(火) 10:43ID:???
セッション ID を盗まれると言うことは、意味的にサーバサイドの
セッション情報ごと盗まれるのと等しい。ただ、情報が丸見えでは
なく、どのような情報か想像しずらいという人間的な利点があるだけ。
ユーザ認証後のセッション ID を盗まれたら、アプリケーションを
乗っ取られたのと事実上同じ。セキュリティを確保したければ SSL
と併用せれ。
0043名無しさん@おへそいっぱい。2001/06/26(火) 10:45ID:???
セッション ID を盗まれると言うことは、意味的にサーバサイドの
セッション情報ごと盗まれるのと等しい。ただ、情報が丸見えでは
なく、どのような情報か想像しずらいという人間的な利点があるだけ。
ユーザ認証後のセッション ID を盗まれたら、アプリケーションを
乗っ取られたのと事実上同じ。セキュリティを確保したければ SSL
と併用せれ。
0047名無しさん@お腹いっぱい。2001/06/26(火) 23:59ID:DSIpbR1w
>46
なんでもいいじゃない?
暗号化も複合化もサーバーでやるんだから
実際にやってるけど、SIDとログインタイムをある形式にフォーマットして
BASE64で暗号化して発行。クライアントから返されるSIDは形式のチェックで先ずはじく。
仮に、クッキー盗まれても有効期限内しか使えないし、
まあ、解読も可能だろうけど、一定期間でキーやアルゴリズム変えれば、
それなりに実用的だと思う。
なんか間違ってる?
0049名無しさん@おへそいっぱい。 2001/06/27(水) 00:52ID:DNFpNq1I
いくら強力な暗号化アルゴリズムを使っても、キーがサーバ側に
あったら意味ないでしょ。盗んだ側にとっては ID が暗号化され
ているかどうかなんて関係なく、盗んだ Cookie をそのまま送り
返せばよいのだから (だから >>39 でクライアント側の IP ア
ドレスをキーにハッシュかけようとした)。

あ、俺が考えてるのは中継サーバ等で Cookie が盗まれた場合ね。
総当りでのセッション ID 盗難防止という話だったら暗号化だけで
効果は高い。んーでも総当りなんて目立つ方法で盗もうとする莫迦
いるか? だから、わざわざセッション ID を暗号化してもたいした
効果がないと思っただけ。
0051名無しさん@お腹いっぱい。2001/06/27(水) 02:33ID:IVYsrfFE
間にProxyが入ろうがどうしようが
クライアント固有の識別ID(macアドレスとか)を
簡単に取れる手段があるといいんですがねえ。
プライバシー的には問題おおありですが。
そういうの、MSならやってくれ・・・ないか。さすがに。
0052名無しさん@お腹いっぱい。2001/06/27(水) 16:30ID:???
proxyの問題を考えなければ簡単なんだけどね>セッションID盗難対策

503iのような、固体識別番号取得タグをどのブラウザも実装してくれれば
話は簡単だけれども。
確認が入るのでプライバシー的な問題も無いと思うし、MSさん実装して
くれまいか。
0054名無しさん@お腹いっぱい。2001/07/02(月) 21:19ID:T7UPCPm6
だめ。SSLで守れたと思っちゃだめ。はー
いま(さらながらに)騒がれてるやつあるよね。
あれは相当驚異だよ。たぶん完全に防げてるサイトなんて数えるほど。
0055名無しさん@お腹いっぱい。2001/07/02(月) 22:08ID:pL9j.pM6
まじっすか? それって何?
0056名無しさん2001/07/02(月) 22:14ID:???
DoCoMoがNULLDOCOMOGW(だっけ?)を一般ユーザーに開放してくれればいいのに…
0058名無しさん@お腹いっぱい。2001/07/03(火) 04:13ID:PMTadY4o
>>54 SSL とサイトへの侵入とがごっちゃになってないか?
それとも SSL のポートを使って侵入 or 成りすましという話か?
0060名無しさん@お腹いっぱい。2001/07/03(火) 09:58ID:.3Xwbm0A
ソースはどこよ
0061名無しさん@お腹いっぱい。2001/07/03(火) 11:25ID:???
言っちゃってもいいかどうか解らん。広めるならもっと思いっきり広めないとだし。
実は知ってる人にはあたり前のことではあるが、C****S***-S********のことです。
解っててもそうそう防ぎ切れないもんでおれも困ってるの。もうここまでにしとくね。
きっとしかるべき機関なり人がしかるべきところで注意喚起してくれることを期待して。
0063名無しさん@おへそいっぱい。2001/07/03(火) 13:41ID:EU3mmkbg
SSL で Cookie 盗んで、なりすましまで出来るものですか?
マジできたら今まで言ったこと撤回するわ。
0064名無しさん@お腹いっぱい。2001/07/04(水) 15:40ID:???
GETをはじく方法ってありますかね?
たとえばxxxx.php?id=123がありid部分を違う数字に
変えれば違う情報が表示されます。
直接入力された時は処理できないようにしたいのですが・・・。
0066名無しさん@お腹いっぱい。2001/07/04(水) 16:23ID:???
PHP4 のセッション変数って、オブジェクト(つまりクラスのインスタンス)は格納できるの?
0068名無しさん@おへそいっぱい。2001/07/04(水) 21:28ID:U5Vc3q2o
>>64 Apache 使ってるなら httpd.conf か .htaccess で
GET がはじけるだろう。まにあるみれ。
0069殿堂ナナシ2001/07/04(水) 23:34ID:???
>>66
セッションの登録について PHP4 マニュアルには
「変数名を保持する文字列または変数名からなる配列」
ってあるね。

Java だと Serializable なオブジェクト(Javabean とか)は
出来るのにね〜。
0070662001/07/05(木) 01:19ID:???
>>69 レスありがと。
あきらめきれずこんなテストコード書いたらちゃんとカウントアプしてくれた。

<?php
class testFoo {
 var $count;

 function testFoo($i) {
  $this->count = $i;
 }

 function inc() {
  $this->count++;
 }

 function hello() {
  $this->inc();;
  echo("hello, " . $this->count . " times.\n");
 }
}

session_start();
if (!isset($obj)) {
 $obj = new testFoo(0);
 session_register("obj");
}
?>
<html>
<h1>
<?php $obj->hello(); ?>
</h1>
</html>

/tmp覗いたら
obj|O:7:"testfoo":1:{s:5:"count";i:3;}
となんとなくシリアライズしてくれてる風味。
0071名無しさん@お腹いっぱい。2001/07/05(木) 12:38ID:???
>>69
そのマニュアルの記述は、session_register(); の引数は
変数を表す文字列かその配列だよという意味だったんだね。
0072名無しさん@お腹いっぱい。2001/07/13(金) 13:41ID:???
PHP4で各ユーザのセッションファイル(sess_*)の特定は
セッションIDの取得すればよいのですかね?
たとえばxxx.php?session_idのような感じでOKかな?
じゃ、Hiddenで渡すとき、nameは何になるのでしょうか?
疑問だったので・・・・・。
0073名無しさん@お腹いっぱい。2001/07/13(金) 14:14ID:IqmDBVro
>>64
例:
$value=$HTTP_POST_VARS["hoge"];

これだとGET送信されたhoge(パラメータ名)の値は取れません。
phpの設定によっては使用できませんが。
0075名無しさん@お腹いっぱい。2001/07/18(水) 09:56ID:pNSSuY1U
>>74
各ユーザのセッション情報を特定するということじゃないのかな?
例えば、各ユーザでカスタマイズされたページを出力
するとか・・・。
0076名無しさん@お腹いっぱい。2001/07/18(水) 13:58ID:IiBzwOm6
>>74
必要性を感じないなら必要なし。
複数のHTTPセッションに渡ってクライアント情報を維持したいときに便利。
0077名無しさん@お腹いっぱい。2001/07/18(水) 21:33ID:???
>>76
PHP4 でしょ? だったら session_start() するだけて
session_register() した変数をとりこんでくれるんだから
スクリプト側は session ID を意識しなくていいじゃん。
0078772001/07/18(水) 21:36ID:???
ああ、そうね。書いてから気づいたよ。
セッション終わっても情報を取っときたいってことね。
0079PHP三日目2001/07/18(水) 23:52ID:???
PHPのセッションって
セッションタイムアウトってゆー概念がないの?
(ASPにあるよーなやつ)
0082ナナシファン2001/07/30(月) 11:55ID:gBtO/HQg
>>79
あるよ〜。設定はphp.iniじゃなかったかな?覚えてなくてごめん。
0083ほげ2001/07/30(月) 16:03ID:???
>>82
消える確率とか設定あったよね。どうしてランダムなのか理解に苦しんだ。
0084名無しさん@お腹いっぱい。2001/07/30(月) 19:30ID:???
セッション管理って大丈夫?
二つのページを同時にアクセスした場合とかどうよ
セッション情報に「前のページ」とか残して、
それを信用して組んだりできないよね...
0086コメント無しさん2001/08/03(金) 14:08ID:???
>>84
>セッション情報に「前のページ」とか残して、
>それを信用して組んだりできないよね...
セッション管理が大丈夫かどうかとは関係ない気が

>>85
それは、IEでなんか設定したときだけじゃない?
0087名無しさん@お腹いっぱい。2001/08/04(土) 13:47ID:DQ4jThjY
クッキーに関しての質問です。
クッキーに配列を保存できますかね?
例えば、
$data=array(
"a" => "hoge1",
"b" => "hoge2"
);
SetCookie("hogehoge", $data);
こんな感じで$data配列を作成しクッキーに保存して、
$c_data=$HTTP_COOKIE_VARS["hogehoge"];
で、データを呼び出して
echo"$c_data[a]";
で出力できるようにしたいのですが、
なかなかうまくいかないです。
0088コメント無しさん2001/08/04(土) 17:46ID:???
>>87
こんなスレに書いても、セッション使えで終わると思うが。
再びスレ違い?
0089電動ナナシ2001/08/04(土) 18:06ID:yWM3EPUw
>>87
Cookie は文字列しか受け付けないだろ?
マニュアル (http://www.php.net/manual/en/function.setcookie.php) を
見れば分かるが、引数は "string" と書いてある。
int setcookie (string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])

マニュアルのサンプルコードにやりたいことのやり方が書いてあるぞ。
0090852001/08/07(火) 15:59ID:???
>>86
>それは、IEでなんか設定したときだけじゃない?
(・∀・)?
0091コメント無しさん2001/08/07(火) 16:12ID:???
>>90
クッキーの寿命の話ね。
ひとつのブラウザで1つのセッションになる。
IEは、設定すればウィンドウごとに別セッションになる。

セッションで「前のページ」を保存って話題だから、パラメータでセッション変数渡すことは考えてない。
そんときはパラメータに前ページ情報つければなにも問題ないから。
0092名無しさん@お腹いっぱい。2001/08/10(金) 14:12ID:RmKi09oM
>>91
>IEは、設定すればウィンドウごとに別セッションになる。
どうやってすんの?
0094名無しさん@お腹いっぱい。2001/08/10(金) 14:26ID:RmKi09oM
>>93
クッキーのとこ?
なんないけど
0095名無しさん@お腹いっぱい。01/11/07 01:49ID:xHkACnav
そろそろ>>61について教えて欲しかったり。
age
0096名無しさん@お腹いっぱい。01/11/07 02:15ID:WNbh62gs
ん?
クロスサイトスクリプティングでしょ?
00979501/11/07 02:29ID:xHkACnav
>>96
あーホントだ、よく見りゃそうだ。どうもありがd
これで安心して眠れるぞヽ(´ー`)ノ
0098名無しさん@お腹いっぱい。01/11/08 22:15ID:BR2wW00P
PHP4のセッション初めてつかたけど、
/tmpにセッションごとの変数の値ががんがんたまってます。
もういいやと思ったあたりで消すしかないんでしょうか?
0099名無しさん@お腹いっぱい。01/11/16 10:07ID:dtqn0qNF
ガーベジコレクションで消えてくんじゃない?
レスを投稿する


ニューススポーツなんでも実況