2010-11-06 57 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