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

KOYAMA Tetsuji php-users@php.gr.jp
Thu, 12 Jul 2001 17:25:53 +0900


  小山です。

At Thu, 12 Jul 2001 16:54:55 +0900,
Series wrote:
> 神経質な質問で申し訳ないのですが、PHP4が、セッションIDを発行する
> 仕組みをご存知でしたら教えていただきたく思います。

  困ったときはソースを読めるのが、オープンソースなソフトウェアの良いと
ころです。:-) 

  ext/session.c の 465行目 _php_create_id() 関数が、セッション ID を生
成しています。

  ちなみに

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

  ここまで突き詰めるのであれば、たとえどんな値を用いても、有限値である
以上第三者によって生成可能であることには変わりないでしょう。

  個人的には、そのような可能性を云々するよりは、生成されたセッション 
ID を如何に外に漏らさないようにするかを考えるほうが重要なように思いま
す。HTTP GET で URL に埋め込むのは Referer 漏れの問題があるので大変危
険ですし、大事な部分は可能な限り SSL 化して覗き見からも防護したほうが
いいのは言うまでもありません。

-- 
	小山 哲志@ビート・クラフト
	koyama@beatcraft.com
	koyama@hoge.org