【问题标题】:Change SameSite cookie on the fly in Symfony在 Symfony 中即时更改 SameSite cookie
【发布时间】:2020-09-15 14:36:03
【问题描述】:

此问题与 Chrome 更新有关,他们强制设置 SameSite 属性 (https://www.chromium.org/updates/same-site/incompatible-clients)

点击此链接后,Chrome 51 至 66 将不接受 SameSite=None。但是,在 Symfony 设置中,我设置了以下内容:

framework:
  ...
  session:
    ...
    cookie_samesite: 'none'
    cookie_secure: true

现在,对于 Chrome 客户端 51 到 66,我想将 None 更改为 Lax,所以我猜这必须在请求级别进行更改。如何检测Chrome版本的部分我知道,但不知道检测到设备后如何申请Lax

我无法默认更改为Lax,因为网站可以进行iframe。

有什么建议吗?

【问题讨论】:

    标签: symfony google-chrome cookies samesite


    【解决方案1】:

    如果我对您的理解正确,您需要设置 2 个具有相同值但名称不同的 cookie。例如:

    // main cookie
    $cookieFirst = Cookie::create("main_cookie")
                           ->withValue("some_value_here")
                           ->withPath("/")
                           ->withExpires(0)
                           ->withSecure(true)     // important for chrome if SameSite=None
                           ->withHttpOnly(false)  // if you want access via JS
                           ->withRaw(false)
                           ->withSameSite(Cookie::SAMESITE_NONE) // SameSite=None;
    // then don't forget to set this cookie to headers
    // second cookie
    $cookieSecond = Cookie::create("main_cookie.legacy")
                           ->withValue("some_value_here")
                           ->withPath("/")
                           ->withExpires(0)
                           ->withSecure(true)     // important for chrome if SameSite=None
                           ->withHttpOnly(false)  // if you want access via JS
                           ->withRaw(false)
                           ->withSameSite("") // SameSite=Lax;
    // then don't forget to set this cookie to headers too
    

    我在使用域之间的 iframe 实现通信时使用了这种方法。

    【讨论】:

    • 实际上的问题在于它只是在响应中设置了 cookie,而我需要在请求中更改 cookie。 PHPSESSID 必须在发送到浏览器之前更改,所以我可以确定该 cookie 应该是 Lax 还是 None。
    猜你喜欢
    • 2021-01-11
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    相关资源
    最近更新 更多