如何在现有的 php 会话上从宽松切换到严格

问题描述 投票:0回答:1

我们有一个 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参数?

php cors session-cookies samesite
1个回答
0
投票

Cookie 只是一个 header,在创建时在 HTTP 响应中传递回客户端,并在后续请求中作为标头传递回服务器。

从技术上讲,您应该能够通过

session_start()
调用修改 cookie 的参数,但它只能调用一次,并且必须调用 才能创建并使用之前存储的值填充
$_SESSION
。因此,根据
session_start()
中的值调用
$_SESSION
是根本不可能的。

答案很简单:“首先不要将 cookie 设置为‘宽松’。”

© www.soinside.com 2019 - 2024. All rights reserved.