我有两个 PHP session :
$_SESSION["session"]["key"] = md5 ($token . $userAgent . $ip);
$_SESSION["session"]["timeout"] = time ();
只是想检查与 nginx 的 session ,尝试了此代码但没有成功:
location / {
if ($request_filename ~* "index.php") {
break;
}
if ($http_cookie ~* "session") {
break;
}
rewrite ^.+$ https://localhost/index.php last;
}
有什么线索吗?
谢谢。
最佳答案
cookie 仅保存 session ID,ID 始终在 session_start();
上创建,因此如果您在脚本中调用该 ID,则用户将始终拥有 session ID。
你最好的选择是添加第二个cookie:
setcookie('session_key',md5 ($token . $userAgent . $ip));
然后在 nginx 中:
if ($http_cookie ~* "session_key")
{
break;
}
检查该 cookie 是否已设置。
如果哈希敏感,则执行以下操作:
setcookie('session_key_active','1');
然后在 Nginx 中:
if ($http_cookie ~* "session_key_active")
{
break;
}
但这仍然容易受到攻击,请始终检查服务器端值是否匹配!
关于php - 检查 session 是否存在(Nginx),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3542149/