保护Rails应用程序环境中的密码

时间:2011-08-16 05:52:43

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

所以我发现这个甜蜜的代码使用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。

2 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

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
}