2010-11-06 75 views
2

我有一个应用程序,我正在尝试部署,并且有关于安全性的事情。有没有办法避免我的电子邮件密码以纯文本格式存储在setup_mail中,以及我的数据库密码在environment.rb中?如何将密码保存在公开可见的代码中?

+0

**非常类似的问题在这里:http://stackoverflow.com/questions/18290/how-do-you-secure-database-yml – Zabba 2010-11-06 06:03:41

+0

我不知道你使用什么机制为您的身份验证系统。在设计认证机制时,他们会自动以加密格式存储密码。 “t.string”encrypted_pa​​ssword“,t.string”password_salt“,” – Hemanth 2010-11-06 06:14:31

+0

Zabba - 类似是,但不完全相同。这个问题至少在一定程度上与Capistrano有关,我根本没有使用Capistrano(这是在Heroku上部署的)。另外,我问的只是database.yml以外的文件。如果这些相同的东西很好,但身份不是自动不言而喻的。 – sscirrus 2010-11-06 06:20:06

回答

4

您可以将您的部署服务器上的密码为一个文件,然后沿此线在database.yml中的东西(或其他任何地方,你有敏感数据):

production: 
    adapter: mysql 
    host: localhost 
    database: foobar_production 
    username: foobar 
    password: <%= begin IO.read("/home/deploy/passwords/foobar.db") rescue "" end %> 

...其中foob​​ar.db是一个只包含密码的纯文本文件。

+0

确保对文件的访问被锁定。 – 2010-11-06 06:13:36

+0

@Preet:你会怎么做? – sscirrus 2010-11-06 06:15:34

+0

它都依赖于操作系统。 – 2010-11-06 08:18:55