我在PHP中有两个会话:
$_SESSION["session"]["key"] = md5 ($token . $userAgent . $ip);
$_SESSION["session"]["timeout"] = time ();
只想检查与nginx的会话,尝试此代码但未成功:
location / {
if ($request_filename ~* "index.php") {
break;
}
if ($http_cookie ~* "session") {
break;
}
rewrite ^.+$ https://localhost/index.php last;
}
任何线索?
感谢。
答案 0 :(得分:5)
一个cookie只保存会话ID,始终在session_start();
创建一个id,因此如果您在脚本中调用该用户将始终拥有会话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;
}
但这仍然很脆弱,总是检查服务器端值匹配!