我有一個應用程序,登錄和註銷工作正常。一旦用戶註銷並嘗試訪問他需要驗證的頁面,他將被重定向到登錄屏幕。註銷後的Cookie重播php CodeIgniter
我的問題在於哪裏。如果我在登錄時如果複製cookie值並將它們保存在文件中。註銷後,我更改cookie並添加相同的值,然後以同一用戶的身份重新登錄到應用程序中。
在註銷時我寫了一個循環遍歷所有cookie並刪除它們的函數。
我的理解是cookie既在客戶端也在服務器端。所以,如果cookies被刪除了,它們就會被刪除,並且服務器在被清除後不會識別它們,即使瀏覽器再次發送它們(顯然情況並非如此,我想)。
我之所以這樣做是因爲這是我們的安全審計員提出的要點之一,我需要找到解決這個漏洞的方法。 (在這一點上,做https是不可行的)
如果有人能指示我如何清除服務器端的cookie,我會很高興,所以,當下次有人點擊服務器時使用相同的cookie,它不接受它作爲有效的cookie。
編輯:
我使用笨會議和tank_auth作爲認證庫。註銷時,庫本身調用
$this->ci->session->sess_destroy();
要格外肯定的是,我嘗試了一些嘗試後執行以下操作:
session_start();
session_unset();
session_destroy();
session_write_close();
setcookie(session_name(),'',0,'/');
session_regenerate_id(true);
我的正常註銷的作品,如果我嘗試訪問直接頁面不會打開。
但,如果當我登錄,我把我的餅乾,保存在某個地方吧 - 註銷成功,並與我的大更換的餅乾,我馬上回到會話中。
有沒有辦法阻止這種行爲 - 服務器端在它被銷燬之後不會招待會話的地方。我也確保我的服務器和php在同一時區(將其設置爲date_default_timezone_set
)。
聽起來像你應該使用會話不是餅乾 – 2013-10-17 19:37:05
我現在用的是笨 - '$這個 - >會話級> set_userdata();' – codeHead
對不起,什麼都不知道笨 – 2013-10-17 19:41:48