2016-09-01 77 views
0

這可能是也可能不是一個noob問題,因爲我一直在使用Node.js很長一段時間,但我想知道使用req.session語句有多安全。Node.js req.session用於存儲用戶信息

我目前正在開發一個帶有後端node.js和angular.js前端的web應用程序。 對於後端我使用req.session來檢查用戶是否是管理員。我知道這個請求被嚴格限制在請求方。但實際上它有多安全?這是欺騙性等等...

例如,我在使用此代碼在日誌記錄:

req.session.user = new User(); 
req.session.user.isAdmin = user.isAdmin; 

等等

那麼,如果多了我想知道用戶在同一時間使用後端,首先,node.js是否會混淆事件,其次,這種方法是可欺騙還是黑客證明?

回答

2

快速會話使用cookie將瀏覽器連接到會話。會話只能通過入侵您的服務器(在服務器到達服務器時竊取或修改數據),入侵系統(冒充其他用戶)或通過在登錄後竊取cookie來破解會話。

會話本身只在您的服務器上(或您的服務器可能存儲它的任何位置)。會話本身不與客戶端交換。只有用作會話索引的cookie與客戶端交換。客戶端隨後在每個後續請求中呈現此cookie,並允許node.js識別這是哪個用戶,然後查找該用戶的會話對象(在服務器會話存儲中)。所以,會話基本上和cookie和會話存儲一樣安全。如果有人可以抓取cookie或闖入商店,那麼他們可以模擬登錄用戶或直接訪問會話數據。

因此,整體的安全性取決於這些東西:

  1. 如何安全是你的登錄過程中被黑客攻擊?
  2. 來自入侵者的服務器和服務器數據安全嗎?
  3. 您是否使用適當的HTTPS傳輸和服務器證書來保護正在傳輸的Cookie。
  4. 最終用戶的計算機是否安全,以便cookies不會從其中被盜取,然後在模擬器過期前使用它們?
  5. 您是否在登錄Cookie上使用了適當的過期日期,以減少其他人使用受損cookie的機會?

登錄系統本身往往是一個薄弱環節。如果你不需要強大的憑證,或者你的用戶沒有保護他們的憑證,那麼顯然其他人可以進入,但這與會話安全性無關。

如果你的服務器對黑客來說不安全,那麼人們可以插入或者攔截cookie,或者甚至做更糟糕的事情來破壞服務器或會話。

如果您沒有使用帶有所有適當保護措施的HTTP,那麼cookie可能會在傳輸過程中被竊取(特別是通過非安全WiFi),被盜的cookie可用於冒充用戶並訪問其數據或執行操作該用戶被允許執行。

如果最終用戶的計算機本身不安全,那麼某人可能會在物理上使用該計算機,或者可能能夠竊取在模擬器過期之前可以使用的cookie。


如果上述所有事情都做得很好,快速會話是相當安全的,他們使用相同類型的基於cookie的會話機制,谷歌,臉譜,富國銀行,A和B,等...使用爲他們的登錄會話。

那麼是什麼我不知道,如果是多個用戶使用的是後端在 的同時,第一,不會它曾經發生的node.js將混合 東西?

node.js本身不會混淆。您的node.js代碼必須確保它從不混合,因爲可能同時發生多個請求。但是,每個請求都有自己的reqres對象,只要您只通過req對象訪問會話,並且不將會話數據放入可能同時運行的其他請求可訪問的變量中,那麼它將永遠不要混淆。所以,這是你的代碼不要做一些導致併發問題的事情。 node.js本身和Express會話沒有自己的併發問題。在這方面他們是安全的。

和第二,是這個方法欺騙性或劈證明

參見上面的討論。

+0

令人驚歎的評論和解釋,非常感謝。我將把我的代碼放在這個信息上,並且保證服務器本身的安全。 HTTPS流量當然是保護一切的必要條件 –