2016-01-06 123 views
0

我正在用express.js構建一個單頁應用程序作爲後端。目前我正在使用passport.js本地策略進行身份驗證,並使用bcrypt在db上保存加密密碼。在驗證過程中,用戶提供的密碼會再次加密,並與存儲在數據庫中的密碼相沖突。不過,我目前將密碼以明文形式發送到服務器,而且我明白這是一個非常糟糕且不安全的做法。要做到這一點正確,我理解我必須:使用passport.js進行密碼加密

  • 在服務器上創建隨機字節並將其發送給客戶端

  • 在客戶端上創建隨機字節

  • 串連加密密碼和這兩組字節並加密所有這些字節

  • 將加密對象和客戶端上生成的字節作爲明文發送回服務器

  • 重現相同的加密對象的服務器上,並檢查是否有有效的認證

我可以bcrypt和客戶端上的一些隨機數發生器再次做到這一點,但我有強烈的感覺,我不應該自己實施這個。有一些與護照或我不知道的一些節點庫的集成?

+0

這不會起作用。您絕對需要TLS(SSL)來保護從服務器到客戶端的通信。有更安全的選擇,但他們是很多工作。在短期內,你可以做的最好的事情就是打開TLS,而不是擺弄這樣瘋狂的東西。 – TheGreatContini

回答

1

您可以使用HTTPS(SSL)加密服務器客戶端之間的通信