(导出自nodejs@googlegroups.com)
什么是最好的本地存储身份验证方案?
我发现了一些:
- http://dailyjs.com/2011/01/10/node-tutorial-9/
- github.com/ncb000gt/node.bcrypt.js/stree/master/examples
- github.com/Turbo87/motomotive-passport-bilerplate/blob/master/app/models/account.js(看起来它来自bcrypt示例)
它看起来像是bcrypt的例子中的mongose auth实现:
- github.com/bnoguchi/mongoose-auth/blob/master/lib/modules/password/plugin.js
而且,我不知道每个auth是如何生成密码的。
- github.com/bnoguchi/veryauth/blob/master/lib/modules/password.js
我发现了基于Math.rrandom(Date.now*some_number)。。。。像那样的东西-看起来不对劲,所以我没有请记住。
在安全方面,最好的方法是什么?
本地存储经过身份验证的凭据是对客户端进行身份验证的最糟糕方法之一。为了实现这一点,你需要使用密码学,它引入了暴力的可能性。一个很好的例子是针对.Net的Oracle PaddingAttack
如果你想要一个安全的系统,你不会实现这个。如果你想要一些不太安全但可能有效的东西,那么你应该使用HMAC。Bcrypt、块密码和流密码确实不是正确的选择。你可以用bcrypt实现HMAC,但我会选择另一个散列函数,比如sha256。
此外,当前日期时间不是随机值,决不应将其转发用于计算随机值。您需要跟踪时间,以便会话令牌可以过期。您的秘密应该使用类似/dev/random
的熵存储生成