将密码存储在Ruby脚本中

时间:2014-10-13 15:28:46

标签: ruby security encryption passwords

我在Ruby中编写了一个帮助脚本,通过一些服务器处理我的文件同步。它仅在我的Intranet中使用,并且通过SSH密钥进行身份验证。但现在我想在不能使用SSH密钥的地方使用它,我想将密码存储在配置文件中。

我知道,有一些像bcrypt或OpenSSL这样的加密库,但我有一个问题:

  1. 我启动脚本并输入我的密码,并将其存储在变量中以解密我的密码。
  2. 我的代码是开源的。
  3. 所以每个人都可以访问我的用户到我的计算机(这将是我想要扩展的第一个屏障)并查看内存(存储我的密码短语)可以解密我的密码文件。如何处理与安全相关的应用程序?

    伊迪丝作为对DevDude的回复说(但在这里,因为我想在我的问题中保留我的规范): 但是这个配置文件将是纯文本而不是加密的。当我加密这个文件时,我认为还有两个问题:

    1. super_secret_pwd将存储在变量中,所以当我在计算机的内存中搜索时,我会找到它,不是吗?
    2. 加密的主密码也将作为纯文本存储在内存中。
    3. 所以最大的问题是:是否可以从内存中读取纯文本变量?据我所知,它可能在C和一个很大的安全问题。

1 个答案:

答案 0 :(得分:1)

您要查找的是使用带密码/ API密钥的YAML文件。并且永远不要将此文件检入您的仓库。

然后你可以在初始化器上引用这个文件,也许可以将密码设为全局变量或x,使用configatron等。

这基本上是生产应用程序的工作方式,它们从存储在服务器本身的YAML文件中读取其重要设置。

这就是我使用的:

@c = configatron

# Per environment settings
app_settings = YAML.load_file('config/secret_stuff.yml')

@c.password = app_settings['super_secret_pwd']

不要使用ENVIRONMENT变量,因为它们存在各种安全问题。他们是反模式。