【问题标题】:Hardcoded mysql user and password in Node.jsNode.js 中硬编码的 mysql 用户和密码
【发布时间】:2015-11-19 12:14:25
【问题描述】:

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

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

    connection.connect();

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

【问题讨论】:

    标签: mysql node.js


    【解决方案1】:

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

    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 因素安全性进行一些研究 :)

    【讨论】:

    • 听起来不错。它肯定有助于便携性!感谢您的帮助。
    猜你喜欢
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    • 2016-03-22
    • 2012-10-03
    • 1970-01-01
    相关资源
    最近更新 更多