首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在sinatra + heroku应用程序中存储管理员密码的位置?

在sinatra + heroku应用程序中存储管理员密码的位置?
EN

Stack Overflow用户
提问于 2011-03-02 01:16:52
回答 1查看 1.7K关注 0票数 7

我有一个在Heroku上运行的小Sinatra应用程序,它使用一个管理员密码,外加几个API身份验证密钥。

哪里是存放这些东西的最好的地方?我是否将它们放在环境变量中,并使用

代码语言:javascript
复制
heroku config:add ADMIN_PASSWORD=foobar

?或者我使用包含它们的配置文件,而我只是不提交该配置文件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-02 08:10:28

我将API密钥之类的东西放在一个配置yaml中,如下所示

代码语言:javascript
复制
development:
  twitter_api_key: stringstringstring 
  chunky: bacon
production:
  twitter_api_key: gnirtsgnirtsgnirts
  foo: bar

然后使用Sinatra的内置集合来处理数据。

代码语言:javascript
复制
configure do   
    yaml = YAML.load_file(settings.config + "/config.yaml")[settings.environment.to_s]
    yaml.each_pair do |key, value|
      set(key.to_sym, value)
    end
end 

然后我可以从设置对象访问它们。不过,我不确定您为什么不提交配置文件。。。这里没有主要的安全风险,因为只有那些明确定义的路径才能通过web访问。如果您不想将管理员密码放在数据库中,我猜管理员密码也可以以相同的方式存储,但我至少会使用salt对其进行加密。

在定义您自己的Configuration settings时,请注意不要踩到Sinatra的Sinatra。

编辑:

我想我刚刚意识到为什么您不愿意提交配置文件。如果你正在做一个开源项目,你肯定不想把配置文件提交给你的开源仓库,但是你需要把这个文件提交给Heroku,这样它才能工作。如果是这样的话,我会选择:

  • 使用两个独立的本地repos:一个用于开源项目,另一个用于heroku项目。只需在Heroku项目中将开源项目设置为上游存储库,然后您就可以获取更改。
  • 将API密钥和加密/加盐密码都放在一个数据库中;MongoHQ为Heroku用户提供了一个免费的层,作为使用nosql进行简单nosql存储的插件。
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5157913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档