我们有一个 php api 应用程序,用于在使用 AzureAD 服务器进行身份验证期间设置会话变量。会议开始于:
session_start( [
'name' => '__Secure-session',
'sid_length' => 96,
'sid_bits_per_character' => 5,
'use_strict_mode' => true,
'use_cookies' => true,
'cookie_path' => '/',
//'cookie_lifetime' => 0,
'cookie_secure' => true,
'cookie_httponly' => true,
'cookie_samesite' => isset( $_SESSION, $_SESSION['AD_id'] )?'Strict':'lax',
] );
在最后一行中,一旦用户成功登录(一旦我们获得了她的 AD_ID),我们就会尝试将 SameSite 从 lax 更改为 Strict。但会话 SameSite 仍处于宽松状态。
会话建立后,如何修改会话的cookie参数?
Cookie 只是一个 header,在创建时在 HTTP 响应中传递回客户端,并在后续请求中作为标头传递回服务器。
从技术上讲,您应该能够通过
session_start()
调用修改 cookie 的参数,但它只能调用一次,并且必须调用 才能创建并使用之前存储的值填充 $_SESSION
。因此,根据 session_start()
中的值调用 $_SESSION
是根本不可能的。
答案很简单:“首先不要将 cookie 设置为‘宽松’。”