我正在React,MongoDB和Node.js中创建一个应用程序,我还很新。我通过Node通过以下方式连接到MongoDB:
// Requiring the dependencies
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const cors = require('cors');
const mongoose = require('mongoose');
const PORT = process.env.PORT || 8080;
const itemRoutes = express.Router();
app.use(cors());
app.use(bodyParser.json());
mongoose.connect('mongodb+srv://my-database:somepassword-xposu.mongodb.net/collection?retryWrites=true&w=majority', { useNewUrlParser: true } )
const connection = mongoose.connection;
connection.once('open', function() {
console.log('Connection to MongoDB established succesfully!');
});
我计划在Heroku上部署此应用程序,但是这种连接方法看起来并不十分安全,我了解了其他方法,但找不到任何方法,但我了解到您可以在env文件中禁用源映射,但这足以保护应用程序安全吗?如果不是,那么在您的应用程序中连接到MongoDB并将其部署到生产环境的安全方法是什么?
答案 0 :(得分:1)
在Heroku上,您可以在部署后将env var添加到dyno中,然后将其添加到您的应用程序中,为此您可以使用许多工具,为简单起见,您可以从npm
安装env2,并创建{您的应用程序根目录上的{1}}文件,只需从它们中调用vars以在生产环境中本地使用,您将在Heroku环境中添加相同的vars名称,并且它们将被注入,因此您希望它们这样做。
config.env
因此,在您的本地环境中,您的.env文件存在,因此它将被注入到节点进程和env变量中,并且在生产环境中,它将不在代码库级别而不是从Heroku级别注入
注意: 确保将
// Requiring the dependencies const express = require('express'); const app = express(); const bodyParser = require('body-parser'); const cors = require('cors'); const mongoose = require('mongoose'); const itemRoutes = express.Router(); require('env2')('config.env') app.use(cors()); app.use(bodyParser.json()); const { DB_URL , PORT = 8080 } = process.env; mongoose.connect(DB_URL, { useNewUrlParser: true } ) const connection = mongoose.connection; connection.once('open', function() { console.log('Connection to MongoDB established succesfully!'); }); and on the config.env file just add this line DB_URL = mongodb+srv://my-database:somepassword-xposu.mongodb.net/collection?retryWrites=true&w=majority
文件添加到`.gitignore'文件