トップ «前の日記(2006-11-15) 最新 次の日記(2006-11-26)» 編集

活動日誌


2006-11-24

[Ruby]CGI::Session での session ID 生成

PHPで安全なセッション管理を実現する方法に対する高木さんのコメントへのフォロー を読んで、Ruby の CGI::Session について調べてみた。

Ruby 1.8.5 では、デフォルトの session ID 生成アルゴリズムは次のようになっている。

def create_new_id
  require 'digest/md5'
  md5 = Digest::MD5::new
  now = Time::now
  md5.update(now.to_s)
  md5.update(String(now.usec))
  md5.update(String(rand(0)))
  md5.update(String($$))
  md5.update('foobar')
  @new_session = true
  md5.hexdigest
end

ここで、session ID の生成を現状のものではなく /dev/urandom があれば使うようにするべきなのかどうかは、自分には分からなかった。 (/dev/urandom を使えば問題ないのは確かだが、現状のものがまずいのかどうかは分からなかった)

session ID の生成については [ruby-dev:24183] で問題が指摘されているが、 これは今は解決しているようだ。(Time#usec を使うようになったのと、srand に /dev/urandom を使うようになったため)


2005|02|03|04|05|06|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|03|04|05|06|10|
2008|04|10|
2009|10|
2010|05|08|
2012|01|02|03|
2014|01|
2022|05|
トップ «前の日記(2006-11-15) 最新 次の日記(2006-11-26)»