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作业删除文件。 该密码仍然存在于系统中,但要跟踪哪里更难。
- 如何用JavaScript在mongodb中设置唯一的id
- 我可以为mongo中的查询创build一个可拖动的光标吗?
- 存在Mongodb适配器的NodeJS错误:由应用程序closures的连接
- 在Mongoosejs中dynamic填充聚合函数
- 你知道nodeJS中的mongoDB的任何教程吗?
- 如何使用Node.js在MongoDB中查找logging
- Ubuntu中包含Express,MongoDB和Mongoose的Node.js中的REST API。 MongoError:第一次连接时无法连接到服务器
- ajax在节点js中获取请求expression
- 为什么Mongoose的JavaScript在同一行中有一个返回和一个callback?