2014-09-02 59 views
2

我習慣於僅使用cookies工作。在Express.js中,存儲會話中的任何數據是否安全?

使用cookie,我會保存一個用戶名和散列,並對每個頁面加載執行一次數據庫查詢,以確保用戶擁有正確的密碼。當我想到會話不能被用戶編輯時,我正要用會話做同樣的事情。

從理論上說,我會說:看

req.session.authenticated = true 

,只是測試,如果用戶已經通過認證,而無需重新檢查,如果密碼是正確的。

這是安全嗎? 還是有必要存儲用戶名和散列?

P.S.我正在使用Express Express 4.8.6與快速會話1.7.6

回答

3

express-session不在cookie中存儲任何工作數據。相反,它將一個uuid存儲在cookie中,然後將該uuid與會話存儲中的數據相匹配(默認爲內存)。

因此,如果我訪問您的網站,您會給我一個包含23949324的cookie。您分配給我的會話的任何數據將存儲在不在我的瀏覽器中的某個位置,我的Cookie仍保留爲23949324。 Redis是一個常見的會話存儲。

你可以做req.session.creditcard = "4186xxxxxxxxxxx2",這在技術上是安全的,至少在餅乾的領域。實際上,你可能不應該在會話存儲中存儲信用卡數據明文。

如果你想持續的會議,我會建議express-sessions

+0

非常有幫助 - 謝謝! – Kites 2014-09-02 18:41:10