<p>引き続き<a href="http://p0t.jp/mt/archives/2005/07/web_4.html">セッションIDかぶっちゃう問題</a>。</p> <blockquote><p><a title="p0t: PHPのセッションID3" href="http://p0t.jp/mt/archives/2005/07/web_4.html">p0t: PHPのセッションID3</a></p> <p>一度session_id()を取得するんじゃなくて、</p> <p>session_id(md5($_SERVER[&#8216;SERVER_ADDR&#8217;].uniqid(rand(),1)));</p> <p>とかやるのはどうですか?<br /> 某所でこんなコードを書いたことがあって、正解かどうか激しく気になります。正解でしょうか?教えてください。</p> <p>あと、$_SERVERの値って、php.iniやらの設定で取れないことあるよね。そんな時どうしよう。どうしよう・・・</p> <p>投稿者 kかべ : 2005年07月12日 14:16</p></blockquote> <p>kかべさんのこの案が素敵な感じがします。<br /> 調べてみると<strong>セッションID発行</strong>と<strong>md5(uniqid(&#8221;&#8221;&#8221;&#8221;,1))</strong>はほぼ等価っぽいので正解なのではないでしょうか!</p> <p>php-4.3.11/ext/session/session.c</p> <pre class="prettyprint"><code>sprintf(buf, &amp;quot;%ld%ld%0.8f&amp;quot;, tv.tv_sec, tv.tv_usec, php_combined_lcg(TSRMLS_C) * 10); PHP_MD5Update(&amp;amp;context, buf, strlen(buf));</code></pre> <p>php-4.3.11/ext/standard/uniqid.c</p> <pre class="prettyprint"><code>if (more_entropy) { sprintf(uniqid, &amp;quot;%s%08x%05x%.8f&amp;quot;, prefix, sec, usec, php_combined_lcg(TSRMLS_C) * 10); } else { sprintf(uniqid, &amp;quot;%s%08x%05x&amp;quot;, prefix, sec, usec); }</code></pre> <p>$_SERVERはどういうとき使えないんでしたっけ。その場合は、どうしよう・・・。</p> <p>ref: <a href="http://p0t.jp/mt/archives/2005/07/web_4.html">PHPのセッションID3</a></p>

Comments


Option