【发布时间】:2013-09-02 04:58:58
【问题描述】:
我有一个网页在登录时切换到 HTTPS,在注销时切换回 HTTP。为了增强安全性,登录时会话 cookie 设置为安全 (HTTPS)。我的登出页面是pretty standard,代码如下:
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");
直到最近,当我开始查看响应标头时,我才考虑到其中的含义。现在在我看来,当页面切换回 HTTP 时调用 session_start() 会创建一个覆盖安全 cookie 的新会话 cookie。
这意味着setcookie 和session_destroy 可能对新会话而不是旧会话起作用。我更担心驻留在我服务器中的旧会话数据可能无法正确销毁。
在这种情况下,如何对 HTTP 注销页面进行编码以确保旧会话数据真正被销毁?
【问题讨论】: