【问题标题】:Setting session_id cookie SameSite property in Rails在 Rails 中设置 session_id cookie SameSite 属性
【发布时间】:2020-04-25 12:37:13
【问题描述】:

我试图在 Rails 5.0.7.2 应用程序的会话 cookie 中设置 SameSite 属性,但在确定设置位置和设置方式时遇到问题。

看起来在 Rails 6.1 中将引入一种全局确定 SameSite 保护级别的方法,请参阅:https://github.com/rails/rails/commit/cd1aeda0a9dc15f09d7bf1b8b59e2ce07946f031。也就是说,如何在以前的版本中进行设置?

处理 SameSite 的方式将改变即将到来的 Chrome 版本 80,我正在尝试为此做准备,特别是涉及到:

“用于跨站点使用的 Cookie 必须指定 SameSite=None;安全才能包含在第三方上下文中。”

更多信息请见https://web.dev/samesite-cookie-recipes/

【问题讨论】:

  • 我认为可以通过monkeypatching ActionDispatch::Request::CookieJar#handle_options 来完成。
  • 嗯,在 Rack 版本 2.1 发布之前,您似乎甚至无法将“无”设置为 SamSite 值:github.com/rack/rack/issues/1387
  • 您可以通过覆盖Rack::Utils.set_cookie_header! 方法来实现此目的,如此处所述stackoverflow.com/a/60036434/979858

标签: ruby-on-rails devise ruby-on-rails-5 samesite


【解决方案1】:

我能够使用 secure_headers gem 和 rails 4.2.11.1 做到这一点,我将配置放入初始化程序中

SecureHeaders::Configuration.default do |config|
  config.cookies = {
   samesite: {
    none: true
   }
  }
end

https://github.com/twitter/secure_headers/blob/master/docs/cookies.md

【讨论】:

  • 我在 rails 6.0.3.2 和 firefox 77.0.1 上尝试过,但仍然在浏览器控制台中收到警告。
猜你喜欢
  • 2020-07-04
  • 2020-12-28
  • 2020-04-18
  • 1970-01-01
  • 2020-05-01
  • 2018-11-21
  • 1970-01-01
  • 2019-05-14
  • 2019-04-02
相关资源
最近更新 更多