如何在生产中保护mongoDB连接

玛玛德娃(Mahma Deva)

我正在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并将其部署到生产环境的安全方法是什么?

伊斯兰·阿布·休加尔

在Heroku上,您可以将env vars添加到dyno中npm,然后config.env部署后将其添加到您的应用程序中,为此您可以使用很多工具,为简单起见,您可以从安装env2 ,并在应用程序根目录中创建文件,然后调用来自它们的vars在生产环境中本地使用,您将在Heroku环境中添加相同的vars名称,并且将它们注入,因此您希望他们这样做。

// 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

因此,在您的本地环境中,您的.env文件存在,因此它将被注入到节点进程和env变量中,而在生产环境中,它将不在代码库级别而不是从Heroku级别注入

注意:确保将config.env文件添加到`.gitignore'文件中

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章