[PHP-users 679] Re: セッションID を生成する仕組みについて

Series php-users@php.gr.jp
Thu, 12 Jul 2001 16:54:55 +0900


シリーズです。

早速のお返事ありがとうございます。

>  PHP4 のセッション ID は REMOTE_ADDR や REMOTE_PORT とは関係なく
>生成されます。
>   有限な数の集合である以上、完璧にユニークであるとは言い切れない
>と思いますが、事実上ユニークと考えても差し支えないでしょう。

事実上ユニークであるということには賛成です。

ただ、自分が第三者に組んだプログラムに関する説明を行う際に、

1セッションIDの発行を関数に任せている
2セッションIDの発行にはキーが不要
3しかし、その関数がどのような仕組みでセッションIDを発行しているかが
 分からない
4したがって、そのセッションIDが本当にユニークなものであるかが
 証明できない。あるいは、第三者によって生成することが不可能である
 ということが証明できない。

ということでつまづいています。
乱数を使っている場合は、二つのコンピュータが
1同じタイミング
2同じ条件
で乱数を発行した場合は同じ値になる可能性があります。
もし、セッションIDの発行が単純な乱数によるものであれば、
第三者によって生成することも不可能ではないということに
なってしまわないでしょうか?

神経質な質問で申し訳ないのですが、PHP4が、セッションIDを発行する
仕組みをご存知でしたら教えていただきたく思います。

|  まずは PHP のマニュアルのセッションの項をじっくり読んで
|みると良いでしょう。

http://www.php.net/manual/ja/ref.session.php
|session.cookie_lifetimeは、ブラウザに送信す るクッキーの有効期間
|を秒数|で指定します。値0は、"ブラウザを閉じ るまで"を意味します。
|デフォルトは、0です。 

と、ありました。ありがとうございます。そして失礼いたしました。

|# 実は今書いている WEB+DB Press Vol.4 の原稿は、セッションネタだった
|# りします。(^^;
そうなんですか、それは是非購入させていただきます。