2010-08-22 53 views
2

我在PHP两会:检查会话的存在(Nginx的)

$_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; 
} 

任何线索?

谢谢。

回答

5

一个cookie只是保存会话ID,一个ID总是在session_start();上创建,所以如果你在你的脚本中调用,那么用户将始终有一个会话ID。

你最好的选择是太添加第二个cookie:

setcookie('session_key',md5 ($token . $userAgent . $ip)); 

然后nginx的范围内:

if ($http_cookie ~* "session_key") 
{ 
    break; 
} 

检查,如果该cookie设置。在Nginx的

setcookie('session_key_active','1'); 

然后:

如果哈希是敏感的,然后做这个

但这仍然是脆弱的,随时检查服务器端的值相匹配!

+0

谢谢你帮助我,但我不能把'钥匙'放入cookie中,任何人都可以得到这个安全原因。 – Caio 2010-08-22 17:33:33

+0

没关系我很困惑:S – Caio 2010-08-22 17:46:25

+0

再次阅读,小更新 – RobertPitt 2010-08-22 17:52:19