Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 在sinatra+中存储管理员密码的位置;heroku应用程序?_Security_Heroku_Sinatra - Fatal编程技术网

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

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上运行了一个小的Sinatra应用程序,它使用一个管理员密码,外加两个API认证密钥

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

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存储的插件,使用