我創建了一個基本上是MySQL數據庫接口的Java應用程序。它有助於組織和跟蹤數據。我們在工作場所使用它,沒有任何問題 - 我已經將它從Eclipse中導出爲jar文件,並將所有jar文件複製給每個人。在安裝過程中保存Java應用程序的屬性
現在我們想讓這個軟件可用於其他工作場所。問題是數據庫的URL,用戶名和密碼在應用程序中被硬編碼。我想爲它創建一個設置過程,以便有人下載它時,他們會通過一個嚮導下載MySQL並在任何地方設置數據庫。然後該人員可以將jar文件分發給工作場所中的每個人,而無需他們進行設置,因爲每個人都將訪問相同的數據庫。
該過程必須以某種方式保存數據庫URL,用戶名和密碼,以便工作場所的人員可以從任何計算機運行該jar。這讓我認爲他們應該被保存在罐子裏......是我需要的屬性文件?我可以在jar中放置一個屬性文件,並允許在安裝過程中對其進行編輯嗎?
任何指導非常感謝,我很新!
============================================== ====================================
編輯:我想我要去什麼現在做的是讓用戶安裝MySQL並自己設置他們的數據庫。正如下面的答案所暗示的那樣,使用這種自動化可能比它的價值更麻煩,因爲我必須處理每個人的不同平臺,設置數據庫的偏好,安全問題等等。一旦他們這樣做,他們就會下載我的jar文件。
我已經添加了一個屬性文件到我的jar文件來存儲數據庫URL,用戶名和密碼。該文件最初是空的,所以當用戶第一次運行jar時,程序將嘗試訪問屬性文件,查看它是否爲空,並提示用戶輸入此信息。然後它將從jar中提取屬性文件,編輯它們的信息,並將屬性文件粘貼回jar中。然後,該人應該能夠將更新的jar發佈給他們的同事,並且他們都應該能夠打開它而不必提供該信息。我已經有這部分工作。我還將增加「重新配置」程序的能力 - 以防用戶移動數據庫時 - 通過調用相同的方法(他們將再次分發新版本的程序)。
接下來,我想嘗試通過加密或混淆代碼來以某種方式保護屬性文件(雖然我認爲這隻適用於類文件而不適用於文本文件...)。我擔心的是,工作場所的任何人都可以打開它並打開屬性文件,然後使用URL,用戶名和密碼自行訪問數據庫並造成損害。理想情況下,除了程序本身之外,沒有人能夠解除它。
如果有人對我的方法有其他疑慮,請告訴我!
搜索谷歌和SO的「Java密碼存儲」,也看看http://stackoverflow.com/questions/7017688/what-is-the-best-practice-for-securely-storing-passwords-in -java – Java42 2013-02-24 01:45:48