2012-03-19 26 views
-1

(從發件人[email protected]節點驗證模式/方案

本地存儲的最佳驗證方案是什麼?

我已經發現了幾個:

  • http://dailyjs.com/2011/01/10/node-tutorial-9/
  • github.com/ncb000gt/node.bcrypt.js/tree/master/examples
  • github.com/Turbo87/locomotive-passport -boilerplate/BLOB /主機/應用/型號/ account.js (這看起來像是從bcrypt例子來)

它看起來像貓鼬-auth的工具從bcrypt的例子還有:

  • github.com/bnoguchi/mongoose-auth/blob/master/lib/modules/password/plugin.js

和,我無法找出如何everyauth正在生成的密碼。

  • github.com/bnoguchi/everyauth/blob/master/lib/modules/password.js

...和我發現,基於的Math.random(日期噸。現在* some_number)....類似的東西 - 看起來不正確,所以我不記得 。

明智地做這種安全措施的最佳方法是什麼?

回答

0

本地存儲經過身份驗證的憑證是驗證客戶端的最糟糕的可能方式之一。爲了解決這個問題,你需要使用加密技術,這就引入了暴力的可能性。 Oracle Padding Attack used against .Net是一個很好的例子,說明這種錯誤如何發生。

如果你想要一個安全的系統,你不會實現這個。如果你想要的東西不是很安全,但可能會起作用,那麼你應該使用HMAC。 Bcrypt,分組密碼和流密碼真的不是正確的選擇。你可以使用bcrypt實現HMAC,但是我會選擇另一個哈希函數sha256。

而且,當前日期時間爲不是隨機值,因此不應該爲隨機值的計算而中繼該值。您將需要跟蹤時間,以便會話令牌可以過期。你的祕密應該用一個熵存儲生成,如/dev/random

+0

日期正被用於隨機數的種子。另外,wrt/dev/random,我被告知直接閱讀會降低隨機性,應該使用/ dev/urandom。也就是說,我在看HMAC,你建議看看是否有我錯過的或更好的認證方式(我認爲我的客戶更喜歡ldap或廣告,但這些模塊似乎是實驗 – ag4ve 2012-04-02 06:44:46

+0

s/experiment /是相當的beta和我不想支持這一點)./ – ag4ve 2012-04-02 06:55:38