Node.js中的硬编码mysql用户和密码

时间:2015-08-25 17:03:31

标签: mysql node.js

我正在使用带有node.js的mysql。像这样:

    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'me',
      password : 'secret',
      database : 'my_db'
    });

    connection.connect();

我只是想知道在服务器中硬编码数据库凭据(用户和密码)是否会危及安全性。 如果是这样,那么更好的方法是什么呢?

1 个答案:

答案 0 :(得分:6)

处理此问题的最佳方法是将您的凭据存储在环境变量中。然后,您将访问您的凭据,如下所示:

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : process.env.DB_HOST,
  user     : process.env.DB_USER,
  password : process.env.DB_PASS,
  database : process.env.DB_NAME
});

connection.connect();

然后你会使用像dotenv这样的库来设置环境变量。您可以将环境变量放在不与应用程序一起分发的.env文件中,并且不在版本控制中。一个例子.env可能看起来像这样

DB_NAME=my_db
DB_HOST=localhost
DB_PASS=secret
DB_USER=me

https://www.npmjs.com/package/dotenv - 有关使用dotenv的更多信息,请参阅此链接,并对应用中的12因素安全性进行一些研究:)