【问题标题】:Protecting Passwords in a Rails Application's Environments在 Rails 应用程序环境中保护密码
【发布时间】:2011-08-16 05:52:42
【问题描述】:

所以我发现了这段代码,可以将 Gmail 用作 Rails 应用程序的 SMTP 服务器:

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
 :address => "smtp.gmail.com",
 :port => 587,
 :domain => "google.com",
 :authentication => :login,
 :user_name => "<email address>",
 :password => "<password>",
 :enable_starttls_auto => true
}

这很棒,但它需要我进行身份验证,所以我的用户名和密码会出现在设置哈希中。

如何保护我的用户名和密码免受源代码和 CVS(即我可能授予访问权限的其他开发人员)的影响。我正在考虑以某种方式从我的开发机器主目录上的文本文件中读取这些值,但是 我不知道该怎么做。

任何人都可以提供一种方法来保护这些价值观,使其免于提交给我的 CVS。

【问题讨论】:

  • 附加问题:任何有权访问 Rails 服务器的人都可以在应用程序运行时从哈希中读取密码 - 对吧? (所以像config.action_mailer.smtp_settings[:password] 这样的应用程序中的代码会溢出吗?)

标签: ruby ruby-on-rails-3 security development-environment actionmailer


【解决方案1】:

所以我想通了(显然我已经过度解决了这个问题):

 :user_name => IO.readlines('/some/path/secret_auth.txt')[0],
 :password => IO.readlines('/some/path/secret_auth.txt')[1]

这会从指定的路径中读取第一行和第二行,并在 rails 应用程序中使用它们。由于该文件超出了 CVS 的范围,因此其他开发人员不知道。

对于@zabba - 你是对的,你可以(前提是你可以访问 rails 配置的实例)。

【讨论】:

    【解决方案2】:

    right here 之前,我已经回答了几乎完全相同的问题。长话短说,将您的凭据设置为环境变量,如下所示:

    config.action_mailer.smtp_settings = {
     :address => "smtp.gmail.com",
     :port => 587,
     :domain => "google.com",
     :authentication => :login,
     :user_name => ENV['EMAIL_USERNAME'],
     :password => ENV['EMAIL_PASSWORD'],
     :enable_starttls_auto => true
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-10
      • 1970-01-01
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多