web-dev-qa-db-fra.com

Cryptage des mots de passe par Node.js

J'utilise actuellement les outils suivants pour chiffrer les mots de passe:

var pass_shasum = crypto.createHash('sha256').update(req.body.password).digest('hex');

Pourriez-vous suggérer des améliorations pour rendre le projet plus sûr?

37
alditis

J'utilise le code suivant pour saler et hacher les mots de passe.

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);
   });
};
79
balazs

bcrypt peut également être appelé de manière synchrone. Exemple de 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
4
jazeee

Il existe également un module bcrypt-nodejs pour noeud. https://github.com/shaneGirish/bcrypt-nodejs

Auparavant, j'utilisais déjà le module bcrypt déjà mentionné, mais je tombais dans des problèmes sur win7 x64. D'autre part, bcrypt-nodejs est une implémentation JS pure de bcrypt et n'a aucune dépendance.

4
Sergey Yarotskiy

Vous pouvez utiliser le package bcrypt-js pour chiffrer le mot de passe.

  1. Essayez npm i bcryptjs
  2. var bcrypt = require ('bcryptjs') en haut.
  3. Pour hacher un mot de passe:

    bcrypt.genSalt(10, function(err, salt) { bcrypt.hash("B4c0/\/", salt, function(err, hash) { // Store hash in your password DB. }); });

  4. Pour vérifier votre mot de passe,
    // Load hash from your password DB. bcrypt.compare("B4c0/\/", hash, function(err, res) { // res === true });

Vous pouvez visiter https://www.npmjs.com/package/bcryptjs pour plus d'informations sur bcryptjs.

0
Anand Mainali