我正在開發一個Struts 2 web應用程序,所有常量值和硬編碼值都將移動到屬性文件以及那些特定於數據環境的常量源名稱,一些服務器連接URL和幾個用戶ID也放置在屬性文件中。正確位置以放置struts web應用程序的屬性文件
最初我放置的屬性在類文件的路徑和使用的資源束,如下
ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle("config\appProps");
問題的,這是因爲那些環境的特定常量永遠環境(DEV/UAT/PROD)一個單獨的訪問戰爭需要通過更改屬性文件環境特定的常量值來生成,以避免我在以下過程中使用
我在web.xml的上下文參數中保留了屬性文件的絕對路徑,並從上下文獲取路徑並閱讀下面的屬性文件
Properties prop = new Properties();
prop.load(new FileInputStream("<<file system absolute path from context param>>"));
這就消除產生每個環境在服務器上的路徑不同的戰爭過程中可保持不變,但我才知道,安全明智的,我們不應該使用絕對路徑一樣,這可能使服務器文件系統詳細信息
請讓我知道在Web應用程序中加載屬性文件的正確方法是考慮安全性,並避免爲每個環境生成不同的war文件。
謝謝。
公開服務器文件系統詳細信息* who *? – 2014-11-21 14:02:14
嗨Dave Newton當我們讓我們的代碼掃描一些應用程序安全工具時,它給出了一個高風險的說法,那就是黑客有機會利用文件系統,所以我們不應該在應用程序中使用絕對路徑。不完全確定該安全工具告訴的是否有效,因爲我們在web.xml中有路徑而不在任何JSP文件中。 – Vinay 2014-11-21 15:50:56
如果他們已經在利用文件系統,那麼做任何有價值的事情都爲時已晚。如果它沒有抱怨web.xml路徑,你可以使用init-params,你可以在應用服務器上使用JNDI等。 – 2014-11-21 15:56:16