ruby on rails - Comment puis-je sécuriser les cookies(https uniquement) par défaut dans les rails?



ruby-on-rails ssl (4)

Il n'y a pas besoin de monkeypatch ActionController / ActionDispatch , et force_ssl a des effets secondaires (par exemple, derrière un ELB ).

Le moyen le plus simple d'obtenir des cookies sécurisés est de modifier config/initializers/session_store.rb :

MyApp::Application.config.session_store :cookie_store, key: '_my_app_session',
                                                       secure: Rails.env.production?

https://ffff65535.com

Dans un contrôleur Rails, je peux définir un cookie comme celui-ci:

cookies[:foo] = "bar"

Et spécifiez que l'indicateur "sécurisé" (https uniquement) soit activé comme ceci:

cookies[:foo, :secure => true] = "bar"

:secure est faux par défaut. Comment puis-je avoir des cookies sécurisés par défaut, à l'échelle de l'application?

Ceci est sur Rails 2.3.8


Merci @knx, vous m'avez envoyé sur le bon chemin. Voici le monkeypatch que j'ai trouvé, qui semble fonctionner:

class ActionController::Response
  def set_cookie_with_security(key, value)
    value = { :value => value } if Hash != value.class
    value[:secure] = true
    set_cookie_without_security(key, value)
  end
  alias_method_chain :set_cookie, :security
end

Qu'est-ce que tu penses?


Vous devriez regarder la gem de rack-ssl-enforcer. Je cherchais simplement une réponse claire à cela et cela résout le problème indépendamment de la version de Rails sur laquelle vous êtes, et elle est extrêmement configurable.


en commençant par les rails 3.1, selon le guide de sécurité des rails , vous pouvez simplement définir ce qui suit dans votre application.rb :

config.force_ssl = true

Cela oblige le cookie à être envoyé via https uniquement (et je suppose tout le reste aussi).





ssl