【问题标题】:How do I set the session cookie's HttpOnly setting to false?如何将会话 cookie 的 HttpOnly 设置为 false?
【发布时间】:2011-02-10 09:41:33
【问题描述】:

在 Ruby on Rails 中,如何将会话 cookie 的 httpOnly 设置为 false?

【问题讨论】:

  • PSA:不要在生产中这样做httponly 标志是为了安全起见。听起来可能意味着“不是 https”,但实际上意味着“不适用于 JavaScript”。 httponlysecure 标志兼容,这意味着“仅通过 https 连接发送”。见owasp.org/index.php/HttpOnly

标签: ruby-on-rails session cookies httponly


【解决方案1】:

我想通了。在/config/environment.rb 中包含此代码:

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

【讨论】:

  • 这是什么版本的rails?我在 rails 3 中尝试,并得到以下错误:undefined method `session=' for ActionController::Base:Class
  • @Peter 这是在 RoR 3 之前为 2.3 版编写的。没有用 3 测试过。
  • 我做了一个解决方法,在这里:stackoverflow.com/questions/8351871/…
【解决方案2】:

这就是我使用 Rails 3 的方式:

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

【讨论】:

    【解决方案3】:

    在 Rails 4 中,您需要编辑 config/initializers/session_store.rb

    Rails.application.config.session_store(
      :cookie_store,
      key: '_socializus_session',
      httponly: false,
    )
    

    【讨论】:

    • 合理的问题,CodeDave。您通过值false 传递密钥:httponly。 (根据此处的其他答案 - 只是要编辑的代码的位置已从 environment.rb 更改为初始化程序)
    【解决方案4】:

    Rails 将其默认设置为 true。 我不建议更改它,因为它会设置您可以从 JS 更改的 cookie,例如:document.cookie

    在 Rails 3+ 中,您可以从 config/initializers/session_store.rb 更改您的 cookie 配置:

    # Be sure to restart your server when you modify this file.
    Rails.application.config.session_store :cookie_store, key: "_my_application_session", httponly: false
    

    【讨论】:

      猜你喜欢
      • 2017-02-04
      • 1970-01-01
      • 2012-01-11
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-30
      相关资源
      最近更新 更多