Node.js Mongoose在URI中隐藏密码
使用Node.js Mongoose在URI中隐藏密码,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,使用mongoose.connect('mongodb://username:password@主机:端口/数据库?选项…),我在脚本中使用,我不认为有任何真正的方法隐藏密码 如果Mongodb只监听127.0.0.1,我应该担心吗?如果我的服务器可以被攻击,那么猫可以只猫脚本获得密码 您可以在启动节点时将密码放入环境变量中,或者从未签入源代码管理的文件中读取密码。如果mongodb仅在本地主机上侦听,则攻击者将无法从远程计算机直接连接到数据库。仍然建议将防火墙配置为阻止远程访问,以防某些配置更
mongoose.connect('mongodb://username:password@主机:端口/数据库?选项…)代码>,我在脚本中使用,我不认为有任何真正的方法隐藏密码
如果Mongodb只监听127.0.0.1,我应该担心吗?如果我的服务器可以被攻击,那么猫可以只猫脚本获得密码 您可以在启动节点时将密码放入环境变量中,或者从未签入源代码管理的文件中读取密码。如果mongodb仅在本地主机上侦听,则攻击者将无法从远程计算机直接连接到数据库。仍然建议将防火墙配置为阻止远程访问,以防某些配置更改公开打开mongodb。这里可能有一个相关主题
解决方案1:
使用环境变量
使用MONGO\u PASSWORD=yourpasswd节点应用程序运行应用程序
然后,您可以使用process.env.MONGO\u密码在应用程序中访问它
解决方案2:
制作一个模块(我称之为“机密”),导出所有机密凭证。不要将其签入源代码管理。然后,你的应用程序就可以要求('secrets')
解决方案3:
是一个加密的密钥值存储,旨在为您的数据提供一个简单、安全和值得信赖的地方
以上所有答案都是很好的建议,但它们仍然让密码在主机上的一个易于识别的位置可见……而不是在shell env变量或文件中
我决定做的是在每次服务器启动时,制作一个作业,为要读取的mongoose脚本创建一个包含密码的文件。然后,有一个cron作业,在启动5分钟后删除该文件。该密码仍然存在于系统中,但要追踪其位置将困难得多 对于解决方案2,它与在mongoose.connect
中简单地硬编码密码有何不同?@Yerken,给定secrets.js
中的密码,只需将该secrets.js
添加到.gitignore
中,这样您就不会在提交时意外地添加它。因此,源代码中没有密码。您的意思是版本控制中没有密码,它仍然在源代码中:)