将Twitter应用程序的API密钥放在服务器上的位置

时间:2017-07-30 15:06:49

标签: ruby security twitter server directory-structure

我正在为我的朋友们写一些Twitter机器人使用Twitter的Ruby宝石。我的计划是将它们的密钥存储在.txt文件中,其余的机器人代码放在我的服务器上,但我读过的所有内容都说密码不应该在代码中可读。这是否足够安全,如果不是,那将是一个很好的解决方案?谢谢!

1 个答案:

答案 0 :(得分:1)

一种常见的方法是将环境变量保存到名为.env的文件中,该文件被版本控制忽略(因此不会包含在Github中),但是由代码读取。帮助解决这个问题的一个宝石是dotenv

  1. .env添加到.gitignore文件。
  2. 使用您的所有env vars
  3. 创建一个本地.env文件
  4. require 'dotenv'并将Dotenv.load放在脚本开头的某处。在Rails中,require是不必要的,您可以将加载调用放在config/initializers文件夹中的任何文件中
  5. 检查您的应用在本地运行正常。环境变量应该在Ruby代码的ENV哈希中找到。
  6. 保存更改并将新版本的应用推向数字海洋
  7. 在数据海洋服务器上,在repo的根目录中手动创建.env文件
  8. 运行数字海洋服务器并检查一切是否正常。
  9. 其他说明:

    • 请参阅How To Read and Set Environmental and Shell Variables on a Linux VPS

    • 像heroku这样的平台有不同的机制来设置环境变量,例如heroku config:set或Web UI。

    • 您可以使用bash中的env命令一次性设置环境变量,例如:

      env a=hello b=' world' ruby -e 'puts ENV["a"] + ENV["b"]'
      # => hello world
      

      这可以提供一种快速的方法来配置程序而无需进入参数解析。例如在Rails中,您可以说rails c test使用测试环境打开控制台,但env RAILS_ENV=test rails c应该做同样的事情。