如何将会话 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”。 httponly
与 secure
标志兼容,这意味着“仅通过 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?的主要内容,如果未能解决你的问题,请参考以下文章
安全修复之Web——会话Cookie中缺少HttpOnly属性
具有基于 HttpOnly cookie 的身份验证和会话管理的单页应用程序