mongoose在URI中隐藏密码

mongoose.connect('mongodb://username:password@host:port/database?options...'); ,我在脚本中使用,我不认为有任何真正的方法来隐藏密码?

我应该担心Mongodb是否只在127.0.0.1上进行监听? 如果我的服务器可以被利用,那么只能用该脚本来获取密码。

您可以在启动节点时将密码放在环境variables中,或者从未检入源代码控制的文件中读取密码。 如果mongodb只在本地主机上侦听,攻击者将无法直接从远程机器连接到数据库。 将防火墙configuration为阻止远程访问仍然是明智之举,以防万一某些configuration更改公开打开mongodb。

这里可能有一个相关的主题在node.js中将数据库密码存储为纯文本

解决scheme1:

使用一个环境variables。

使用MONGO_PASSWORD=yourpasswd node app运行您的应用MONGO_PASSWORD=yourpasswd node app

然后,您可以使用process.env.MONGO_PASSWORD在应用程序内部访问它

解决scheme2:

制作一个模块(我称之为“秘密”),可以导出所有的秘密凭证。 不要将其检入源代码pipe理。 那么,你的应用程序可以只require('secrets')

解决scheme3:

Trousseau是一个encryption的键值存储,旨在为您的数据提供一个简单,安全和值得信赖的地方。

上面的所有答案都是很好的build议,但是他们仍然可以在主机上显示密码,以便找出位置…而不是在shell envvariables或文件中。

我决定要做的是在每台服务器上启动,创build一个文件,让mongoose脚本读取有密码的文件。 然后,在启动5分钟后,有一个cron作业删除文件。 该密码仍然存在于系统中,但要跟踪哪里更难。