SinatraのSessionには注意

SinatraでSessionはこんな風に使えます

enable :sessions
get '/foo' do
  session[:message] = 'Hello World!'
  redirect '/bar'
end
get '/bar' do
  session[:message]
end

SinatraではRackのCookieSessionをつかってるのですが、secretキーを指定していないため、MarshalしてBase64するだけのデータをクッキーに乗せてきます。
このままじゃ書き換えられて大変な事になるので、デフォルトのsessionは有効にせずに、RackのSessionをsecretキーを指定して使うべきではないだろうか。secretキーを指定した場合は、データとdigestをクッキーに乗せてくるので書き換えが検出できます。

use Rack::Session::Cookie,
  #:key => 'rack.session',
  #:domain => 'foo.com',
  #:path => '/',
  :expire_after => 3600,
  :secret => 'change'
get '/foo' do
  session[:message] = 'Hello World!'
  redirect '/bar'
end
get '/bar' do
  session[:message]   # => 'Hello World!'
end


Sinatraの使い方はココに書きました
http://labs.unoh.net/2009/05/sinatra.html