【问题标题】:encrypt password from a database in mongo从 mongo 的数据库中加密密码
【发布时间】:2017-06-12 01:03:27
【问题描述】:

我正在开发一个平均堆栈应用程序,并且我在硬编码的数据库中有一个用户名和密码。我想加密该密码并将其存储回数据库中。 (使用 mongoDB、AngularJS、nodeJS) 有什么建议吗?

【问题讨论】:

    标签: angularjs node.js mongodb mongoose


    【解决方案1】:

    假设您使用的是 angularjs 和 node,您可以使用来自 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);
    });

    【讨论】:

      【解决方案2】:

      它不叫加密,而是散列。为此,您可以在 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
      });
      

      【讨论】:

        猜你喜欢
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-09
        • 2013-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多