2017-01-26 2 views

답변

0

angularjs와 노드를 사용한다고 가정하면 npm의 mongoose (https://www.npmjs.com/package/mongoose)를 사용하여 데이터를 매핑 할 수 있습니다. 그런 다음 bcrypt (https://www.npmjs.com/package/bcrypt)를 사용하여 안전하게 암호를 저장할 수 있습니다.

bcrypt도 소금을 가지고 있기 때문에 bruteforcing을 막으려면 이걸 들여다 볼 수 있습니다.

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

는 그것은 암호화하지만 해싱 호출되지 않습니다. nodejs에 bcrypt 모듈을 사용할 수 있습니다. 암호

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

해시하기 위해, 그리고 사용자 암호를 확인하기 위해

bcrypt.compare(passwordFromLogin, hashFromDatabase, function(err, res) { 
    // res evaluates to `true` if successfull login 
}); 
관련 문제