爲了提高性能,我試圖消除一個普通的「會話cookie」,但是加密了cookie本身的所有信息。簽名會話cookie。一個好主意?
一個很簡單的例子:
userid= 12345
time=now()
signature = hmac('SHA1',userid + ":" + time, secret);
cookie = userid + ':' + time + ':' + signature;
的時間將用於最大expirytime,所以餅乾不會靠永遠。
現在對於一個大問題:這是一個壞主意嗎?
我最好用AES256代替嗎?在我的情況下,數據不是保密的,但在任何情況下都不能改變。
編輯
一些好的批評和意見後,我想補充一點:
- 的「祕密」將是唯一的每個用戶和不可預測的(隨機字符串+用戶名?)
- Cookie將自動失效(這是基於時間值+一定的秒數完成的)。
- 如果用戶更改密碼(或者甚至註銷?),祕密應該改變。
最後一點:我試圖想出減少數據庫負載的解決方案。這只是我正在調查的解決方案之一,但它是我最喜歡的。主要原因是我不必研究更適合這種數據的其他存儲機制(memcache,nosql),它使Web應用程序更加「無狀態」。
你的平臺是什麼? – 2010-07-13 19:30:30
嗨米粉餅乾,這是PHP,但我離開它,以避免特定於平臺的討論。目前我們在多個web服務器上使用PHP,並使用Master-Master mysql設置。會話cookie被緩存在memcached中。我們的瓶頸主要是附加和刪除Cookie。複製還附加到輔助數據中心,並且會話相關查詢是流量的一大塊。 – Evert 2010-07-13 19:49:44
Evert,如果您用問題中概述的方法成功實施了整個客戶端會話,我會感興趣。您的實施細節是什麼使您的系統儘可能安全?謝謝:) – 2011-07-11 08:42:25