2011-09-09 48 views
1

我正在設計一個Web應用程序,其中一個要求是確保用戶憑證以及他們的角色。現在ofc除了通常的密碼哈希+鹽+ .... 我正在考慮把這些特定的表放在一個加密的H2數據庫中,其餘的數據在MySQL數據庫中。在我的情況下H2的優點是:內存中的存儲,這意味着更快的訪問;加密的數據庫,以便在服務器受到威脅時提供額外的安全層。確保數據庫中的敏感數據,使用H2值得嗎?

我的問題:這是一個常見的做法,當需要額外的安全層?這意味着從其他數據中分離登錄信息(在我的情況下,它是敏感數據)是一個好主意嗎?

感謝

回答

0

我不認爲這確實增加了安全性的相關層。

如果您的服務器被攻破服務器可以驗證用戶的憑據,那麼誰破壞你的服務器有必要的數據進行驗證,以及(例如:你需要存儲的加密密鑰/密碼在服務器上解密數據庫,除非在每次啓動時輸入)。

而且:它使你的設置複雜化了很多,這本身可能會導致很多安全問題(「爲什麼組件A不能讀取這個文件?哦,我只是讓它成爲世界可讀的」)。簡單可以是有利於安全。

+0

hmm..I明白你的意思。比方說,在我的情況下,dbs存儲在一個單獨的服務器上,而不是web應用程序,所以使用安全通道從服務器A到服務器B完成通信。但我同意,這會使設置變得複雜...... 讓我這麼說吧,如果你在設計一個數據庫,並且你知道你必須保護存儲在幾張桌子上的特定敏感數據,你會怎樣做? – Elio

0

如果應用程序非常簡單,我認爲您只能使用一種類型的數據庫,例如, MySQL的。您可以在存儲到數據庫之前散列密碼。請注意,哈希與加密不同,因爲您無法從哈希密碼獲取實際密碼。當用戶嘗試登錄時,會散列用戶輸入的密碼並比較已存儲在數據庫中的散列值。如果使用鹽值,那麼即使她有權訪問哈希密碼,黑客也很難獲得真實的密碼。

對於更復雜的應用程序,我建議使用其中一個ldap服務器(例如openladp)。然後你可以免費獲得密碼策略和散列。