如何将会话 cookie 的 HttpOnly 设置为 false?

Posted

技术标签:

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

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

【问题讨论】:

PSA:不要在生产中这样做httponly 标志是为了安全起见。听起来可能意味着“不是 https”,但实际上意味着“不适用于 javascript”。 httponlysecure 标志兼容,这意味着“仅通过 https 连接发送”。见owasp.org/index.php/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 测试过。 我做了一个解决方法,在这里:***.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

【讨论】:

以上是关于如何将会话 cookie 的 HttpOnly 设置为 false?的主要内容,如果未能解决你的问题,请参考以下文章

将会话 cookie 设置为 HttpOnly

安全修复之Web——会话Cookie中缺少HttpOnly属性

如何使用存储在HttpOnly Cookie中的令牌注销

具有基于 HttpOnly cookie 的身份验证和会话管理的单页应用程序

从 HttpURLConnection 保存 Cookie(包括 !httponly 标志)和会话

设置了HttpOnly属性的COOKIES用DELPHI怎么访问