Security 在sinatra+中存储管理员密码的位置;heroku应用程序?
我在Heroku上运行了一个小的Sinatra应用程序,它使用一个管理员密码,外加两个API认证密钥 存放这些东西最好的地方在哪里?我是否将它们放在环境变量中,并使用Security 在sinatra+中存储管理员密码的位置;heroku应用程序?,security,heroku,sinatra,Security,Heroku,Sinatra,我在Heroku上运行了一个小的Sinatra应用程序,它使用一个管理员密码,外加两个API认证密钥 存放这些东西最好的地方在哪里?我是否将它们放在环境变量中,并使用 heroku config:add ADMIN_PASSWORD=foobar ??还是我使用包含它们的配置文件,而我只是不提交配置文件?我在配置yaml中粘贴API键之类的东西,就像这样 development: twitter_api_key: stringstringstring chunky: bacon pr
heroku config:add ADMIN_PASSWORD=foobar
??还是我使用包含它们的配置文件,而我只是不提交配置文件?我在配置yaml中粘贴API键之类的东西,就像这样
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访问。如果你不想把管理员密码放在数据库中,我想管理员密码也可以用同样的方式存储,但我至少会用密码加密
当你定义自己的时候,小心不要踩到Sinatra的脚
编辑:
我想我刚刚意识到为什么您不愿意提交配置文件。如果您正在处理一个开源项目,您当然不想将配置文件提交给您的开源repo,但是您需要将该文件提交给Heroku,以便它能够工作。如果是这样,我会:
- 使用两个单独的本地回购:一个用于开源项目,另一个用于heroku项目。只要将开源项目设置为Heroku项目中的上游存储库,就可以获取更改
- 将API密钥和加密/加密密码放入数据库中;为Heroku用户提供了一个免费的层,作为简单nosql存储的插件,使用