引き続きセッションIDかぶっちゃう問題

p0t: PHPのセッションID3

一度session_id()を取得するんじゃなくて、

session_id(md5($_SERVER[‘SERVER_ADDR’].uniqid(rand(),1)));

とかやるのはどうですか?
某所でこんなコードを書いたことがあって、正解かどうか激しく気になります。正解でしょうか?教えてください。

あと、$_SERVERの値って、php.iniやらの設定で取れないことあるよね。そんな時どうしよう。どうしよう・・・

投稿者 kかべ : 2005年07月12日 14:16

kかべさんのこの案が素敵な感じがします。
調べてみるとセッションID発行md5(uniqid(””””,1))はほぼ等価っぽいので正解なのではないでしょうか!

php-4.3.11/ext/session/session.c

sprintf(buf, "%ld%ld%0.8f", tv.tv_sec, tv.tv_usec, php_combined_lcg(TSRMLS_C) * 10);
PHP_MD5Update(&context, buf, strlen(buf));

php-4.3.11/ext/standard/uniqid.c

if (more_entropy) {
    sprintf(uniqid, "%s%08x%05x%.8f", prefix, sec, usec, php_combined_lcg(TSRMLS_C) * 10);
} else {
    sprintf(uniqid, "%s%08x%05x", prefix, sec, usec);
}

$_SERVERはどういうとき使えないんでしたっけ。その場合は、どうしよう・・・。

ref: PHPのセッションID3

Comments


Option