在Node.js中对mysql用户和密码进行了硬编码

我用node.js使用mysql。 像这样的东西:

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

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

处理这个问题的最好方法是将您的凭据存储在环境variables中。 然后你可以像这样访问你的凭证:

 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这样的库来设置环境variables。 你可以把你的环境variables放在一个.env文件中,这个文件不是随应用程序一起分发的,而且不是版本控制。 例如.env可能看起来像这样

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

https://www.npmjs.com/package/dotenv – 请参阅此链接了解更多关于使用dotenv的信息,并在应用程序中对12个因子的安全性进行一些研究:)