我有一个在Heroku上运行的小Sinatra应用程序,它使用一个管理员密码,外加几个API身份验证密钥。
哪里是存放这些东西的最好的地方?我是否将它们放在环境变量中,并使用
heroku config:add ADMIN_PASSWORD=foobar?或者我使用包含它们的配置文件,而我只是不提交该配置文件?
发布于 2011-03-02 08:10:28
我将API密钥之类的东西放在一个配置yaml中,如下所示
development:
twitter_api_key: stringstringstring
chunky: bacon
production:
twitter_api_key: gnirtsgnirtsgnirts
foo: bar然后使用Sinatra的内置集合来处理数据。
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,这样它才能工作。如果是这样的话,我会选择:
https://stackoverflow.com/questions/5157913
复制相似问题