【问题标题】:Devise - how does it set session cookies?设计 - 它如何设置会话 cookie?
【发布时间】:2013-06-21 14:56:18
【问题描述】:

我有一个场景,我不需要在 HTTP 上设置会话,而只需在 HTTPS 页面上设置它。目前的问题是我们在 HTTPS 和 HTTP 之间共享会话字符串。

即如果您访问我们的 HTTP 页面,您将获得一个会话字符串(不安全)。当您访问我们的 HTTPS 页面之一时,它使用相同的会话字符串。它们在两者之间共享。我们不希望人们能够通过未加密的连接窥探会话字符串。

有人可以指点我读一些书,或者告诉我如何实现这样的目标吗?即使在哪里看 - 我有点难过。找不到太多

【问题讨论】:

  • 好吧,要么是安全的,要么不是。你不能同时拥有它......
  • 我不确定你的意思 - 对会话等非常陌生。
  • 您是否也考虑过将https 用于整个应用程序?

标签: ruby-on-rails security session devise


【解决方案1】:

rails 会话数据默认存储在 cookie 中,听起来您只想使用 SSL cookie 吗?

更新:尝试在您的config/initializers/session_store.rb 文件中添加secure: true,即

secure_option = (Rails.env.development? || Rails.env.test?) ? false : true
YourApp::Application.config.session_store :cookie_store, { key: '_xxxx_session', secure: secure_option }

设计在生成 cookie 时应该使用 rails 设置


原答案

在您的 config/initializers/devise.rb 文件中应该有一行如下所示

 # :secure => true in order to force SSL only cookies.

尝试添加到 config.rememberable_options 并重新启动 rails - 注意:在开发模式下,这不是您想要的,您也许可以这样做

secure_option = (Rails.env.development? || Rails.env.test?) ? false : true
config.rememberable_options = { :secure => secure_option }

另见:

【讨论】:

【解决方案2】:

如果您想修改会话 cookie,您将不得不在看守回调中修改它们,请参阅 this threadthis blog post

或者,您可以使用separate cookie。 RailsCast here.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-18
    • 2013-11-19
    • 1970-01-01
    • 2015-10-16
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多