2017-01-26 3 views
0

平均スタックアプリを開発しています。ハードコードされたデータベースに1つのユーザー名とパスワードがあります。そのパスワードを暗号化してDBに保存したいのですが。 (mongoDB、AngularJS、nodeJSを使用) 提案はありますか?mongoのデータベースからパスワードを暗号化

答えて

0

anglejsとノードを使用していると仮定すると、npmのmongoose(https://www.npmjs.com/package/mongoose)を使用してデータをマップできます。次に、bcrypt(https://www.npmjs.com/package/bcrypt)を使用してパスワードを安全に保管することができます。

bcryptには塩分が含まれていますので、あなたがブルートフォースを防止したい場合は、それを調べることができます。

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 
}); 
関連する問題