【问题标题】:what's the best way to protect secret keys when deploying a Meteor App?部署 Meteor 应用程序时保护密钥的最佳方法是什么?
【发布时间】:2012-12-31 16:38:59
【问题描述】:
我正在将 Filepicker.io 连接到我的流星应用程序以进行文件上传。该服务有一个 API 密钥,(当然)他们建议保密。我在 github 上找到了其他几个示例应用程序,其中文件选择器密码位于客户端代码中的普通站点中。这似乎有点不稳定。即使它不在公共 repo 中,因为它是在客户端代码中指定的,我可以使用 Javascript 控制台(如果我想要的话)从应用程序中获取密钥。
我想知道有没有一种方法可以将秘密与应用程序(如 heroku 配置)一起存储,这样可以很容易地保持该密钥的秘密。
我目前的计划是将密钥放入数据库并锁定该模型,以便它只能从服务器代码中获得。有没有更简单的方法?
感谢您的任何指点。
【问题讨论】:
标签:
deployment
configuration
meteor
【解决方案1】:
devel 分支(即将在 0.5.3 中)具有新的 Meteor.settings 功能:如果您将 JSON 文件作为参数传递给 meteor run 或 meteor deploy,则该对象将在服务器为Meteor.settings。 (使用meteor deploy,这是持久的,因此您不必每次都记住传递它。)
(如果您使用自己的托管环境,您可以通过METEOR_SETTINGS 环境变量传入 JSON 文件的内容。)
使用数据库也可以——这就是 Meteor Accounts 存储 OAuth 帐户配置的方式。我个人的看法是Meteor.settings 最适合应用程序配置,而数据库最适合包配置,因为它允许包在首次运行时显示交互式配置小部件,就像accounts-ui 一样。