2017-01-26 15 views
0

Ich entwickle eine Mean Stack App und ich habe einen Benutzernamen und ein Passwort in der Datenbank, die ich fest codierte. Ich möchte dieses Passwort verschlüsseln und in der Datenbank speichern. (mit MongoDB, AngularJS, NodeJS) irgendwelche Vorschläge?Passwort aus einer Datenbank in Mongo verschlüsseln

Antwort

0

Angenommen, Sie verwenden angularjs und node, können Sie mongoose (https://www.npmjs.com/package/mongoose) von npm verwenden, um Ihre Daten zuzuordnen. Dann können Sie bcrypt (https://www.npmjs.com/package/bcrypt) verwenden, um Ihre Passwörter sicher zu speichern.

bcrypt hat auch Salz, also können Sie sich das ansehen, wenn Sie Bruteforcing verhindern wollen.

var mg = require('mongoose'); 
 
var bcrypt = require('bcrypt'); 
 
var SALT_FACTOR = 10; 
 
mg.connect('mongodb://localhost'); 
 

 
var db = mg.connection; 
 

 
db.on('error', function(err){ 
 
    console.log('error', err); 
 
}); 
 

 
db.once('open', function(){ 
 
    console.log('Connection successful'); 
 
}); 
 

 
var Schema = mg.Schema; 
 
var mySchema = new Schema({ 
 
    name:String, 
 
    password:String 
 
}); 
 

 
var User = mg.model('User', mySchema); 
 

 
mySchema.pre('save', function(next){ 
 
    var user = this; 
 
    if (!user.isModified('password')) return next(); 
 

 
    bcrypt.genSalt(SALT_FACTOR, function(err, salt){ 
 
    if(err) return next(err); 
 

 
    bcrypt.hash(user.password, salt, function(err, hash){ 
 
     if(err) return next(err); 
 

 
     user.password = hash; 
 
     next(); 
 
    }); 
 
    }); 
 
}); 
 

 
var testdata = new User({ 
 
    name: "root", 
 
    password: "123456" 
 
}); 
 

 
testdata.save(function(err, data){ 
 
    if(err) console.log(err); 
 
    else console.log ('WOHOO:' , data); 
 
});

0

Es wird keine Verschlüsselung, sondern Hashing genannt. Sie können dafür das Modul bcrypt in nodejs verwenden. Um das Passwort

var bcrypt = require('bcrypt'); 
const saltRounds = 10; 
bcrypt.hash(passwordFromSignup, saltRounds, function(err, hash) { 
    // store hash in database 
}); 

Und um Hash das Benutzerkennwort

bcrypt.compare(passwordFromLogin, hashFromDatabase, function(err, res) { 
    // res evaluates to `true` if successfull login 
}); 
zu überprüfen
Verwandte Themen