Mongoose在URI中隐藏密码

时间:2016-01-08 02:58:39

标签: node.js mongodb mongoose

我在脚本中使用varchar(max),我认为没有任何真正的方法来隐藏密码?

如果Mongodb只收听127.0.0.1,我是否应该担心?如果我的服务器可以被利用,那么只需捕获该脚本即可获取密码。

3 个答案:

答案 0 :(得分:2)

您可以在启动节点时将密码放在环境变量中,或者从未检入源控件的文件中读取密码。如果mongodb仅侦听localhost,则攻击者将无法从远程计算机直接连接到数据库。建议将防火墙配置为阻止远程访问,以防某些配置更改公开mongodb。

答案 1 :(得分:1)

以下可能是一个相关主题Store db password as plain text in node.js

解决方案1:

  

使用环境变量。

     

使用MONGO_PASSWORD=yourpasswd node app

运行您的应用      

然后,您可以使用process.env.MONGO_PASSWORD

在应用内访问它

解决方案2:

  

创建一个模块(我称之为"秘密"),导出所有秘密凭据。不要将其检查为源代码控制。然后,您的应用只需require('secrets')

解决方案3:

  

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

答案 2 :(得分:0)

上面的所有答案都是很好的建议,但是他们仍然可以在主机上看到密码,这个位置很容易找到...而不是shell env变量或文件。

我决定做的是在每个服务器启动时,创建一个为要读取的具有密码的mongoose脚本创建文件的作业。然后,有一个cron作业,在启动后5分钟后删除该文件。该密码仍然存在于系统上,但要追踪到哪里会更加困难。