2010-08-22 57 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