Comment définir le drapeau HttpOnly sur un cookie dans Ruby on Rails
-
09-06-2019 - |
Question
La page Protection de vos cookies: HttpOnly explique pourquoi la création de cookies HttpOnly est une bonne idée.
Comment définir cette propriété dans Ruby on Rails?
La solution
Définissez l'option "http_only" dans le hachage utilisé pour définir un cookie
par exemple.
cookies["user_name"] = { :value => "david", :httponly => true }
ou, dans Rails 2:
par exemple.
cookies["user_name"] = { :value => "david", :http_only => true }
Autres conseils
Réponse de Laurie:
Notez que l'option : http_only
a été renommée en : httponly
(sans trait de soulignement).
Dans Actionpack 3.0.0, c'est-à-dire Ruby on Rails 3, toutes les références à : http_only
ont disparu.
Cela m'a jeté pendant un moment.
Définissez simplement: http_only sur true comme décrit dans le journal des modifications .
Si vous avez un fichier appelé config / session_store.rb incluant cette ligne (Rails 3+), il est déjà défini automatiquement.
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 vous permet également de définir les clés suivantes:
: expire - l'heure à laquelle ce cookie expire sous forme d'objet Time.
: secure - si ce cookie est uniquement transmis aux serveurs HTTPS. La valeur par défaut est false.
J'ai également écrit un correctif inclus dans Rails 2.2, qui définit par défaut la session CookieStore sur http_only.
Malheureusement, les cookies de session sont toujours des cookies standard par défaut.