存储用户名和密码并将其传递给数据库连接配置的正确方法?

Proper way to store and pass username and password to config for database connection?

我刚刚使用 Express 和 Tedious 创建了我的第一个 React 后端。存储 and/or 传递的用户名和密码以连接到数据库的正确方法是什么? 'back-end' 是否足够安全,可以像这样内联?

const express = require('express')
const app = express()

app.get('/dbCall', (req, res) => {
    var Connection = require('tedious').Connection;
    var Request = require('tedious').Request;
    var config = {
        "server": "localhost",
        "authentication": {
          "type": "default",
          "options": {
            "userName": "myUsername",
            "password": "myPassword"
          }
        },
        "options": {
          "port": 1533,
          "database": "myDB",
        }
      }
    ...
  }

存储 'secret' 数据的一种方法是使用 dotenv 模块。

1.安装模块:

npm install dotenv

2。在您的根目录中创建“.env”文件(与 package.json 相同的目录)

.env 的内容应该如下所示(是的,它只是纯文本):

APP_SERVER=localhost
APP_USERNAME=myUsername
APP_PASSWORD=myPassword
APP_PORT=1533
APP_DATABASE=myDB

3。设置 dotenv(您希望在您的应用程序中尽早执行此操作)

// example where to put it
const express = require("express");
const app = express();

const dotenv = require("dotenv");
dotenv.config();

4。利润

const express = require('express')
const app = express()

const dotenv = require("dotenv");
dotenv.config();

app.get('/dbCall', (req, res) => {
    var Connection = require('tedious').Connection;
    var Request = require('tedious').Request;
    var config = {
        "server": process.env.APP_SERVER,
        "authentication": {
          "type": "default",
          "options": {
            "userName": process.env.APP_USERNAME,
            "password": process.env.APP_PASSWORD
          }
        },
        "options": {
          "port": process.env.APP_PORT,
          "database": process.env.APP_DATABASE,
        }
      }
  }

注: 如果您使用 git,则必须将“.env”文件放入 .gitignore,如果您已经推送了秘密数据,则可能需要考虑删除以前的提交。

编辑: 如果您多次使用数据库配置对象,我建议将您的配置放在一个单独的文件中。

  1. 创建“databaseConfig.js”文件
module.exports = {
  server: process.env.APP_SERVER,
  authentication: {
    type: "default",
    options: {
      userName: process.env.APP_USERNAME,
      password: process.env.APP_PASSWORD
    }
  },
  options: {
    port: process.env.APP_PORT,
    database: process.env.APP_DATABASE
  }
}
  1. 在您的代码中需要“databaseConfig.js”
const config = require("path/to/databaseConfig.js");