2012-02-24 69 views
0

我正在爲一個應用程序登錄系統,我不知道我應該存儲什麼信息。目前,我只將用戶ID存儲到會話變量中,並且如果設置了該變量,則會從數據庫中加載具有所有必需信息的用戶。但是,我也想要一個「記住我」的選項,爲此我需要cookies,而且我不確定要在其中存儲什麼。如果僅存儲用戶標識,那將是有風險的,因爲有人可以改變標識併成爲不同的用戶。我的想法是目前要做到這一點:PHP:安全的方式來存儲信息到cookie?

$array = array($user['username'], $user['pass']); 
      serialize(base64_encode($array)); 

所以如果cookie設置,我會反序列化它,並找到與用戶名和密碼(自己在MD5散列密碼)用戶。 但是,我認爲這不是很安全。我應該將哪些內容存儲到cookie中以確保安全,並且還有其他方法嗎?

回答

1

而不是將密碼放入cookie中,您可以從中創建一個哈希值並保存該值。您還可以將散列保存在數據庫中,以便在比較cookie時,用戶名和散列必須匹配,避免暴露密碼。

您可以使用MD5創建一個簡單的散列。

+0

您沒有看完整個問題。無論如何,我已經將密碼散列,然後將其存儲到cookie中,並且當我檢查cookie時,我使用哈希密碼登錄用戶。這是否意味着它是安全的? – ItsGreg 2012-02-24 12:44:09

+0

@cillosis的意思主要是將會話數據與隨機散列一起保存在數據庫中(不要**將用戶數據存儲在cookie中,因爲它允許更容易的會話劫持),最好是sha256。散列存儲在cookie中,以便在cookie存在且有效的情況下可以恢復會話數據。另外,md5不被認爲是安全的。 – Alasjo 2012-02-24 13:00:46