【问题标题】:Where to put API keys for Twitter app on server将 Twitter 应用程序的 API 密钥放在服务器上的哪个位置
【发布时间】:2018-01-06 03:53:28
【问题描述】:

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

【问题讨论】:

  • 您使用什么平台托管?
  • 您可以将其保存为环境变量,只需在您需要的代码中调用它ENV["TWITTER_API"]
  • @maxpleaner 我在 DigitalOcean 上使用 Debian 9 droplet
  • @icemelt 环境变量是否与目录相关联,或者它们是否存在于整个服务器中?原谅我,我对 Unix/Linux 还是很陌生。
  • 它与服务器绑定

标签: ruby security twitter server directory-structure


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 2022-07-29
    相关资源
    最近更新 更多