2009-07-14 78 views
0

我在想,我們在哪裏存儲數據庫配置在獨立的應用程序。客戶端直接連接到數據庫(我知道這不是一個好主意,但我不允許創建服務器或爲RMI開放新端口)在獨立應用程序中使用休眠時的數據源配置

我當然不希望用戶打開Hibernate config xml文件並獲取所有的細節(數據庫用戶名爲&,密碼等)。

回答

1

如果您的客戶端應用程序最終需要詳細信息,那麼它們總是可以以某種方式訪問​​用戶。你可以在這裏做的最好的是混淆細節。你可以base64對它們進行編碼並將它們存儲在屬性文件(而不是hibernate.properties)中,然後在獲得會話工廠之前將它們加載到自己的文件中。要加載配置屬性,您可以使用Configuration類。

如果您希望屏蔽稍微更有知識的客戶端,您還可以加密它們並將密鑰存儲爲代碼中的靜態字段。這並不能保證它的安全,但是你的客戶可能不夠善於反編譯源代碼,並親眼看到你是如何解密這些東西的。

記住支撐服務器端的安全。 (確保數據庫帳戶擁有最少的權限!)另外,禁止遠程服務但允許直接訪問數據庫對我來說似乎不是一個明智的策略。

0

希望你有一個目錄服務器(任何J2EE應用程序服務器都會這樣做),然後在那裏彈出一個數據源並使用Spring的jndi-lookup來檢索它。

失敗像@ wds所說,它是加密的憑據或提示,甚至爲數據庫中的每個用戶創建受限帳戶。

我沒有這樣的客戶端數據庫訪問問題 - 在SOA出現之前它工作良好多年 - 只是確保用戶帳戶只具有有限的權限 - 僅爲表選擇訪問權限,甚至執行所有外觀通過視圖(再次具有必要的權限)執行並在所需的特效上執行。