2011-07-08 34 views
0

我正在開發一個需要會話而不是cookies的項目,我在想知道保護它們的好方法是什麼? 與餅乾我只想做這樣的事情:

$x = serialize(array('username', sha1('pwd'))); 
setcookie('cookieName', $x, time()+60); 
... 
$myCookie = unserialize($_COOKIE['cookieName'])); 
echo $myCookie[0]; 

但我不太清楚如何去了解它的會話。

回答

5

沒有必要序列化會話中的數據。它被序列化爲你。

另外我不明白這與安全有關。 Cookie中密碼的SHA1散列?你根本不應該發送密碼客戶端!至少在會話中,變量只能存儲在服務器端(會話默認存儲在服務器端文件中)

+0

那麼我該如何去檢查用戶是否登錄?我通常只是檢查數據庫中用戶的電子郵件密碼是否正確。這是錯的嗎? – Brandon

+0

@Brandon - 最好的方法是隻創建一個會話,如果用戶登錄成功,然後用標識它們的值填充(我使用的是ID)。 PHP在cookie中創建了一個哈希鍵,允許他們訪問它,因此它本身非常安全。 (用戶不能像直接使用cookie一樣直接影響會話中的變量)爲了增加安全性,您可以自己設置session_id並旋轉它。您也可以過期會話。參見http://php.net/session – Cfreak

0

您也可以將serialzied數據存儲到會話中。另外,如果你願意,你可以所有的會話數據存儲到searilaized形式,數據庫和維護使sesion ID:

$_SESSION['key']= serialize(array('username', sha1('pwd'))); 
1

不要把重要的數據到會話或餅乾。在數據庫和會話中保存ID或散列ID,然後根據散列鍵檢查數據庫中的正確數據。你也可以使用md5('username');保存在會話中,然後當你需要數據時,只需比較會話用戶名/散列與md5('用戶名');的當前用戶。