在开源项目中安全地存储用于连接到DB的密码

时间:2014-09-19 06:16:28

标签: node.js cloud9-ide

Cloud9是一项很酷的服务。如果您创建一个公共工作空间,则意味着每个知道您的项目URL并在cloud9上拥有帐户的人都可以浏览和下载您的代码。这意味着如果我的项目有连接到mongodb,每个人都会看到登录和密码连接到mongo(因为它将在某个源文件中)。

我可以看到安全存储密码的唯一选项(除了使项目保密)是以某种方式将它们添加到环境变量中,并使用 process.env.XXXXXX 调用在代码中。这似乎是安全的,因为即使其他人可能浏览我的代码,他们也无法打开终端并检查我定义的环境变量。

那么,有没有办法将我的自定义环境变量添加到可以通过节点代码中的 process.env.XXXXXX 访问它们?

2 个答案:

答案 0 :(得分:4)

您可以在~/.profile中定义环境变量。只读用户无法访问工作空间目录/home/ubuntu/workspace之外的文件。你可以这样做。

$ echo "export SECRET=geheim" >> ~/.profile

定义变量SECRET,然后通过应用程序中的process.env.SECRET使用它。跑步者(来自“运行”按钮)和终端将评估~/.profile并使环境变量可用于您的应用。

答案 1 :(得分:2)

使用cloud9 runners运行项目时,跑步工具栏的右侧有环境弹出窗口。您可以使用它以您希望的方式添加环境变量,但请确保不要为配置添加名称,因为带有名称的配置会自动保存在.c9 / project.settings

另一种解决方案是在未以readOnly模式公开的目录中创建文件。 e.g

echo "password" |  sudo tee /xxx

您甚至可以使用cloud9终端内的/xxx编辑vi文件。

但当然最好的解决方案是购买高级订阅,并获得更多私人工作空间:)