網(wǎng)絡(luò)上常見方案是:
給Cookies加個加密算法。 給Cookies加個時間戳和IP戳,實際就是讓Cookies在同個IP下多少時間內(nèi)失效。
最終使用MD5來MAC簽名防止篡改……但這樣仍然可以看到明文信息,有一定不安全之處。
我的方案是
cookie==3des(“值,時間,IP戳”); 最終得到的COOKIE是這樣的:3BD1B32614A528EA
使用3DES來加密,這樣保證客戶端沒有明文……。
服務(wù)端檢查的時候,再解密出來值,時間,IP戳,并檢查過期時間與IP……不符的需要清空此COOKIE,轉(zhuǎn)向登錄頁面.
這樣解決了幾個問題
1.客戶端COOKIE無明文,得到不任何有用信息……如果使用MD5簽名,客戶端勢必有明文。
2.無法篡改,一旦篡改后在服務(wù)端解密的時候就會出錯……防止了暴力破解
3.在網(wǎng)絡(luò)被截獲后,也無法使用,因為有IP戳……且IP是加密的,無法看到明文,所以也無法使用偽造IP的方式
4.之所以在客戶端存放IP戳,可以使得其在多臺電腦上存放COOKIE,如果放在服務(wù)端,則只能一臺電腦用COOKIE登錄了,影響用戶體驗,且浪費性能查詢數(shù)據(jù)庫……
摘自attilax的專欄