Como faço para definir o sinalizador HttpOnly em um cookie em Ruby on Rails
-
09-06-2019 - |
Pergunta
A página Protegendo seus cookies:Somente http explica por que criar cookies HttpOnly é uma boa ideia.
Como defino essa propriedade em Ruby on Rails?
Solução
Defina a opção 'http_only' no hash usado para definir um cookie
por exemplo.
cookies["user_name"] = { :value => "david", :httponly => true }
ou, em Rails 2:
por exemplo.
cookies["user_name"] = { :value => "david", :http_only => true }
Outras dicas
Resposta de Re Laurie:
Observe que a opção foi renomeada de :http_only
para :httponly
(sem sublinhado) em algum momento.
No actionpack 3.0.0, ou seja, Ruby on Rails 3, todas as referências a :http_only
se foram.
Isso me confundiu por um tempo.
Basta definir :http_only como true conforme descrito no registro de alterações.
Se você tiver um arquivo chamado config/session_store.rb incluindo esta linha (Rails 3+), então ele já está configurado automaticamente.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"
Além disso, o Rails permite que você defina as seguintes chaves:
:expira - A hora em que esse cookie expira, como um objeto Time.
:seguro - Se este cookie é transmitido apenas para servidores HTTPS.O padrão é falso.
Eu também escrevi um patch que está incluído no Rails 2.2, cujo padrão é http_only para a sessão CookieStore.
Infelizmente, os cookies de sessão ainda são cookies regulares por padrão.