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