5

Ruby と Sinatra を使用してアプリケーションを開発しています。
私が使う

enable :sessions

ラックが提供するセッション変数を使用するため。すべてのセッション Cookie を HTTPOnly にするにはどうすればよいですか? デフォルトでこうなの?これに関するドキュメントが見つかりません。

4

1 に答える 1

8

の代わりに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を要求するだけでテストで簡単に使用できます)

于 2012-09-21T00:18:27.677 に答える