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

Where to put API keys for Twitter app on server

我目前正在为 Ruby 使用 Twitter gem 的朋友编写几个 Twitter 机器人。我的计划是将它们的密钥与机器人的其余代码一起存储在我服务器上的 .txt 文件中,但我读过的所有内容都表明密钥在代码中不应该是可读的。这足够安全吗?如果不够安全,什么是好的解决方案?谢谢!

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

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

其他注意事项:

  • 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 应该做同样的事情。