会话 cookie 设置 SameSite=None; 安全的;

Fra*_*nck 2 php cookies google-chrome header

服务器运行的是 PHP 5.4.45 版 Google Chrome 将从 2020 年 2 月 4 日起默认限制跨站点跟踪。这将导致通过 iframe 连接到我们网站的采购应用程序出现问题

我需要使用 SameSite=None 设置会话 cookie;安全的;

任何建议将不胜感激

谢谢

Ale*_*lex 5

SameSite可从php 版本 >= 7.3php.inisession_set_cookie_params()中获得如果在表单中使用)session_set_cookie_params(array $options): bool

关于php 版本 < 7.3...老实说,我不知道 usingheader()是否会覆盖session_start(). 它可以,也许我会尝试更新答案。

我用php:5.6-cli(docker image,我认为是 5.6.40)做了一个简单的测试,它似乎按预期工作:

session_start();
header('Set-Cookie: ' . session_name() . '=' . session_id() . '; SameSite=None; Secure');
Run Code Online (Sandbox Code Playgroud)

默认情况下,此版本的 php 仅使用 设置会话 cookie key=value; path=/,使用header()被覆盖,仅在响应中发送一个 cookie,并且仅使用SameSite=none; Secure(在 Chromium cookie 和wireshark 数据包中验证)

但是,我建议使用您正在使用的 php 版本进行测试,行为可能会改变。

就我个人而言,我正在考虑不使用session_start(),将会话存储在 db 中并使用设置为header().