问题描述
我刚刚使用 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 中,如果您已经推送了您的秘密数据,您可能需要考虑删除之前的提交。
编辑: 如果您多次使用数据库配置对象,我建议将您的配置放在一个单独的文件中。
- 创建“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,}
}
}
- 在您的代码中需要“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
}
}