Ruby と Sinatra を使用してアプリケーションを開発しています。
私が使う
enable :sessions
ラックが提供するセッション変数を使用するため。すべてのセッション Cookie を HTTPOnly にするにはどうすればよいですか? デフォルトでこうなの?これに関するドキュメントが見つかりません。
の代わりにenable :sessions
:
use Rack::Session::Cookie, {:httponly => true }
代わりにencrypted_cookie gemを使用することをお勧めします。はるかに安全です。例として、これが私がおそらくプロジェクトに持っているものです:
# app/main.rb
module Example
class App < Sinatra::Base # this class in its own file
# stuff here
end
end
# app/config.rb
require "main"
module Example
def self.app #
Rack::Builder.app do
cookie_settings = {
:key => 'usr',
:path => "/",
:expire_after => 86400, # In seconds, 1 day.
:secret => ENV["COOKIE_KEY"], # load this into the environment of the server
:httponly => true
}
cookie_settings.merge!( :secure => true ) if ENV["RACK_ENV"] == "production"
# AES encryption of cookies
use Rack::Session::EncryptedCookie, cookie_settings
# other stuff here
run App
end
end
end
# config.ru
require "app/config"
run Example.app # this in the rackup file
(なぜこのようにレイアウトしたかを明確にするために-この種の構造により、アプリを分割し、app/config.rb.YMMVを要求するだけでテストで簡単に使用できます)