私は現在、パスワードのハッシュに次を使用しています:
var pass_shasum = crypto.createHash('sha256').update(req.body.password).digest('hex');
プロジェクトをより安全にするための改善を提案してください。
次のコードを使用して、パスワードをソルトおよびハッシュします。
var bcrypt = require('bcrypt');
exports.cryptPassword = function(password, callback) {
bcrypt.genSalt(10, function(err, salt) {
if (err)
return callback(err);
bcrypt.hash(password, salt, function(err, hash) {
return callback(err, hash);
});
});
};
exports.comparePassword = function(plainPass, hashword, callback) {
bcrypt.compare(plainPass, hashword, function(err, isPasswordMatch) {
return err == null ?
callback(null, isPasswordMatch) :
callback(err);
});
};
bcryptは同期的に呼び出すこともできます。 Coffeescriptのサンプル:
bcrypt = require('bcrypt')
encryptionUtil =
encryptPassword: (password, salt) ->
salt ?= bcrypt.genSaltSync()
encryptedPassword = bcrypt.hashSync(password, salt)
{salt, encryptedPassword}
comparePassword: (password, salt, encryptedPasswordToCompareTo) ->
{encryptedPassword} = @encryptPassword(password, salt)
encryptedPassword == encryptedPasswordToCompareTo
module.exports = encryptionUtil
Node用のbcrypt-nodejsモジュールもあります。 https://github.com/shaneGirish/bcrypt-nodejs 。
以前は、ここで既に言及したbcryptモジュールを使用していましたが、win7 x64で問題が発生します。一方、bcrypt-nodejsはbcryptの純粋なJS実装であり、まったく依存関係がありません。
パスワードの暗号化にbcrypt-jsパッケージを使用できます。
パスワードをハッシュするには:
bcrypt.genSalt(10, function(err, salt) { bcrypt.hash("B4c0/\/", salt, function(err, hash) { // Store hash in your password DB. }); });
パスワードを確認するには、// Load hash from your password DB. bcrypt.compare("B4c0/\/", hash, function(err, res) { // res === true });
Bcryptjsの詳細については、 https://www.npmjs.com/package/bcryptjs をご覧ください。
Bcryptを使用してみてください。ハッシュを使用してパスワードを保護します。
bcrypt.hash(req.body.password, salt, (err, encrypted) => { user.password = encrypted next() })
ここで、saltは、ハッシュの強度を指定するコスト値です。
ログイン中に、bcrypt.compareメソッドを使用してパスワードを比較します。
bcrypt.compare(password, user.password, (err, same) => {
if (same) {
req.session.userId = user._id
res.redirect('/bloglist')
} else {
res.end('pass wrong')
}
})
詳細については、このブログを参照してください: https://medium.com/@nitinmanocha16/bcrypt-and-nodejs-e00a0d1df91f