とみたです。

On Fri, 17 Dec 2004 16:12:11 +0900
Yukihiro Matsumoto <matz / ruby-lang.org> wrote:

> |セッションIDを作るための元々の値からすると、情報量が 1/4 になっている
> |ような気がして、重複する可能性が高くなってるような気がしたのですが、杞
> |憂でしょうか。

> 空間の大きさはめちゃめちゃ小さくなってますね。
> セッションIDの方は半分にしないってのも手かもしれませんね。
> 互換性の問題は少なそうだし。

そうですね。

> |すいません、prefix のデフォルトが '' であることに、セキュリティ的な問
> |題があるというのが良くわかってないです。どっかで議論されてましたでしょ
> |うか。

> 個人的なメールのやりとりが行われました。結局はprefixがないと
> tmpdirのファイルが狙い撃ちされる危険性があるのではということ
> でした。以前は外側から任意のセッションIDを注入できましたし。

「狙い撃ち」がどういうことかわからないんですが、デフォルト状態で /tmp 
配下のファイル名が特定しやすいということであれば、デフォルトの prefix 
を 'cgi_sid_' にしたところで解決しないような気がします。

> でも、考えてみたらセッションデータのファイル名を生成する時に
> もう一段MD5をかけているので心配する必要はなかったかもしれま
> せんね。

ということであれば、互換性重視の意味で、少なくとも 1.8 の間は prefix 
は '' にしておきませんか?

この変更がどれくらいの人に影響があるのかはわかりませんが、安定版と銘打っ
ているバージョン内では、よっぽどのことがない限り互換性を保つべきだと思
います。

--- session.rb.orig     2004-12-20 14:20:24.000000000 +0900
+++ session.rb  2004-12-20 14:21:41.000000000 +0900
@@ -365,7 +365,7 @@
       #          on Unix systems).
       # prefix:: the prefix to add to the session id when generating
       #          the filename for this session's FileStore file.
-      #          Defaults to "cgi_sid_".
+      #          Defaults to the empty string.
       # suffix:: the prefix to add to the session id when generating
       #          the filename for this session's FileStore file.
       #          Defaults to the empty string.
@@ -374,7 +374,7 @@
       # not exist, or opened if it does.
       def initialize(session, option={})
        dir = option['tmpdir'] || Dir::tmpdir
-       prefix = option['prefix'] || 'cgi_sid_'
+       prefix = option['prefix'] || ''
        suffix = option['suffix'] || ''
        id = session.session_id
         require 'digest/md5'

-- 
とみたまさひろ <tommy / tmtm.org>