我有一个网页在登录时切换到 HTTPS,在注销时切换回 HTTP。为了增强安全性,登录时会话 cookie 设置为安全 (HTTPS)。我的注销页面非常标准,具有以下代码:
session_start();
$_SESSION = array();
$params = session_get_cookie_params();
setcookie(session_name(), "", time() - 42000, $params['path'], $params['domain'], $params['secure'], $params['httponly']);
session_destroy();
require("/var/www/include/logout_success.php");
直到最近,当我开始查看响应标头时,我才考虑到其中的含义。现在在我看来,session_start()
当页面切换回 HTTP 时调用会创建一个新的会话 cookie,它会覆盖安全 cookie。
这意味着setcookie
并且session_destroy
可能在新会话而不是旧会话上采取行动。我更担心驻留在我的服务器中的旧会话数据可能无法正确销毁。
在这种情况下,如何对 HTTP 注销页面进行编码以确保旧的会话数据真正被销毁?