【发布时间】:2019-11-08 16:53:34
【问题描述】:
我正在开发一个将使用 MongoDB 的 Node.js 应用程序,并且我正在努力使其尽可能安全。
数据库认证
首先,我想限制对数据库的访问,所以我添加了一个身份验证。所以现在,在终端中,我必须像这样登录:
~$ mongo -u <myusername> -p --authenticationDatabase admin
但是,在我的 javascript 中,我必须在以下行中以纯文本形式添加密码:
// Connect to the database
mongoose.connect('mongodb://localhost/<myDB>?authSource=admin', {user: <myusername>, pass: <mypassword>, useNewUrlParser: true, useUnifiedTopology: true});
这让我很不安。这让我想到了第一个问题:如何在代码中没有纯文本密码的情况下限制对数据库的访问?
Mongoose 和 MongoDB 之间
我发现 Mongoose 通过 TCP/IP 与 MongoDB 通信。我运行了一个wireshark,看看我是否可以检测到数据,事实上我可以: screen capture
后端和 MongoDB 可能位于 2 台不同的机器上。这让我想到了最后一个问题:我在这里的多个帖子中看到,有时会建立 SSH 连接,但 这是保护通信安全的最佳方式吗?
【问题讨论】:
-
环境变量?
-
如果你想在 TCP 级别保护数据,除了使用环境变量之外,你可以看看在 mongodb SSL/TLS Mongodb 上启用 SSL
标签: node.js mongodb security mongoose