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

问题描述

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

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",}
      }
    ...
  }

解决方法

存储“秘密”数据的一种方法是使用 dotenv 模块。

1.安装模块:

+ (count splitCharacters)

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

.env 的内容应该是这样的(是的,它只是纯文本):

npm install dotenv

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

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

4.利润

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

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

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

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

  1. 创建“databaseConfig.js”文件
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,}
      }
  }
  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
  }
}