2010-04-21 15 views
16

Dans Ruby on Rails, comment définir le paramètre httpOnly du cookie de session sur false?Comment définir le paramètre HttpOnly du cookie de session sur false?

+0

PSA: ** Ne le faites pas en production **. Le drapeau 'httponly' est là pour la sécurité. Cela peut sembler signifier "non https", mais cela signifie en réalité "non disponible pour JavaScript". 'httponly' est compatible avec le flag' secure', ce qui signifie "envoyer uniquement des connexions https". Voir https://www.owasp.org/index.php/HttpOnly –

Répondre

7

J'ai compris cela. Dans /config/environment.rb inclure ce code:

config.action_controller.session = { :httponly => false }

+0

Pour quelle version de rails était-ce? J'essaye dans les rails 3, et obtiens l'erreur suivante: méthode non définie 'session = 'pour ActionController :: Base: Class –

+0

@Peter Cela a été écrit avant RoR 3 pour la version 2.3. Il n'a pas été testé avec 3. – kingjeffrey

+0

J'ai fait une solution de contournement, ici: http://stackoverflow.com/questions/8351871/session-cookie-httponly-false-rails-3-1/8371839#8371839 –

6

Voici comment je l'ai fait avec Rails 3:

Testapp::Application.config.session_store :cookie_store, key: '_testapp_session', :domain => :all, :httponly => false 
7

Dans Rails 4, vous devez modifier config/initializers/session_store.rb

Rails.application.config.session_store :cookie_store, 
    key: '_my_app_session', httponly: false 
+4

Modifier à quoi ? – CoderDave

+3

Question raisonnable, CodeDave. Vous passez la clé ': httponly' avec la valeur' false'. (Comme pour les autres réponses ici - c'est juste que l'emplacement du code à modifier a changé de 'environment.rb' à un initialiseur) – troelskn

0

Rails a il est défini par défaut sur true. Je ne recommande pas de le changer car il vous placera les cookies Accessable pour passer de JS comme: document.cookie

Dans Rails 3+ vous pouvez changer les cookies de configuration 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", httponly: false