Ruby on Rails で Cookie に HttpOnly フラグを設定するにはどうすればよいですか
-
09-06-2019 - |
質問
ページ Cookie を保護する:HTTPのみ HttpOnly Cookie を作成することが良いアイデアである理由を説明しています。
Ruby on Rails でこのプロパティを設定するにはどうすればよいですか?
解決
Cookie の設定に使用されるハッシュに「http_only」オプションを設定します。
例えば
cookies["user_name"] = { :value => "david", :httponly => true }
または、Rails 2 では次のようになります。
例えば
cookies["user_name"] = { :value => "david", :http_only => true }
他のヒント
ローリーの答え:
オプションの名前が から変更されたことに注意してください。 :http_only
に :httponly
(アンダースコアなし) ある時点で。
actionpack 3.0.0、つまり Ruby on Rails 3 では、すべての参照は :http_only
なくなってしまった。
それはしばらく私を驚かせました。
の説明に従って、:http_only を true に設定するだけです。 変更履歴.
この行を含む config/session_store.rb というファイルがある場合 (Rails 3 以降)、すでに自動的に設定されています。config/initializers/session_store.rb
:
# Be sure to restart your server when you modify this file.
Rails.application.config.session_store :cookie_store, key: "_my_application_session"
また、Rails では次のキーを設定できます。
:期限切れ - この Cookie の有効期限が切れる時刻 (Time オブジェクトとして)。
:安全な - この Cookie が HTTPS サーバーにのみ送信されるかどうか。デフォルトは false です。
また、Rails 2.2 に含まれるパッチも作成しました。これは、CookieStore セッションをデフォルトで http_only に設定します。
残念ながら、セッション Cookie はデフォルトでは依然として通常の Cookie です。