2012-02-29 62 views
3

我正在構建一個將處理高度敏感數據的Web應用程序。我關於提高安全性的想法是爲登錄信息創建一個數據庫,以及一個包含敏感數據的完全獨立的數據庫。安全數據庫的認證將依靠通過登錄數據庫進行的兩部分身份驗證以及敏感數據庫中用戶帳戶的驗證。用於登錄信息和任務關鍵信息的單獨數據庫?

我的問題是:那裏有更好的解決方案嗎?如果我將這兩個數據庫都維護在一臺服務器上,是否存在重大安全漏洞?維護單個數據庫還是值得的,只是加密安全數據庫的內容?對安全數據庫的內容進行加密並通過配置文件中的其他用戶/傳遞單獨對其進行身份驗證訪問是否過度矯枉過正?

希望這是有道理的。謝謝。

+0

我想到的是用三個數據庫(如果這聽起來很可笑,請告訴我)。數據庫1:有限的用戶數據,只讀訪問公開。數據庫2:身份驗證數據庫,只允許管理員在數據庫1中創建賬戶。如果登錄後,允許用戶創建一個賬戶(如果它存在於數據庫1中),他們將獲得讀/寫訪問權限,被允許做一個帳戶。數據庫3是基於權限的,並具有由Web程序定義的ACL(其他則在MySQL級別定義)。數據庫3中包含關鍵信息。 – OverlordvI 2012-02-29 05:35:08

回答

1

這取決於您的Web應用程序最可能的攻擊媒介。如果SQL注入對您的應用程序是一種風險,如果用戶可以合法登錄,那麼擁有單獨的數據庫將無濟於事,然後將您的應用程序僞裝爲讀取他們已有權訪問的表中的其他記錄。

一種方法是使用每個用戶的唯一加密密鑰對每條記錄進行加密。這樣,如果他們確實損害了一個用戶帳戶,其他行將是亂碼。這是非常緩慢的,但如果信息是敏感,您可能必須忍受。

另一種方法是不讓敏感信息直接由網絡應用查詢。您的網絡應用程序&在DMZ中運行的非敏感數據庫以及運行在防火牆後面的敏感數據庫將其與DMZ隔離。然後,您可以使用Web服務或嚴格限制的數據庫角色來根據需要獲取數據。然後在Web服務/數據庫端,確保代碼只能傳遞登錄用戶可以看到的記錄。

1

安全就像一個鏈條。最薄弱的環節是整個事情破裂的地方。

因此,使用一個或多個數據庫並不重要。您需要保證整個系統的安全。

1

您應該查看有關存儲信用卡信息的PCI合規性標準。這是一個真正的痛苦實施,但值得。如果你不存儲信用卡或類似的東西,你可能會削減一些角落。

因爲一個真正安全的解決方案需要設置的組合:硬件,軟件和網絡,所以沒有「解決方案」。

http://www.pcicomplianceguide.org/merchants-20071022-gaining-pci-compliance.php

+0

這很有幫助。 PCI合規性在構建安全應用程序時有一些很好的想法。當你編程一些安全的東西時,它們似乎很直觀,但它有一個清單是很好的。 – OverlordvI 2012-02-29 05:30:53