0

由於設計限制,我目前正在使用的項目不允許我們在純文本文件(如屬性文件(主要是由於安全約束))中編寫某些配置參數集。不可訪問的配置設計

是否有任何方法來隱藏這些配置參數,以使它們只能被代碼編程人員訪問。一個普通的Java對象到目前爲止是我唯一的想法。

另外,值得注意的是,硬編碼值對我們來說不是一個好的解決方案,因爲有許多「子應用程序」需要它們自己的配置。在這一點上考慮某種資源包,但仍然會有原始問題。

編輯:所以我遇到Jasypt之際,提出here,但是我覺得我的情況在某種混淆文件的保存,這是足夠的,因爲它是我們所需要的,以便使用戶停止使用配置篡改文件。

+1

通過默默無聞的安全性總是一個壞主意,如果這是你的意思是'隱瞞'。經過一段時間和努力,你的隱藏價值將會顯現出來。如果是這種情況,我們可能需要更多關於架構的信息,以便查看是否有更好的可能。你可以在這裏閱讀更多:https://stackoverflow.com/questions/533965/why-is-security-through-obscurity-a-bad-idea – jackgu1988

+0

嗯,這是一種默默無聞的安全。所以,這筆交易是我們有一臺服務器,可以像其他應用程序一樣運行,也可以引擎。爲了部署應用程序,我們需要編寫一組配置。然後將代碼部署在我們的客戶端服務器的war文件中。情況是,有時或客戶周圍的客戶篡改這種開放的配置,並導致許多令人頭痛的問題。所以這就是爲什麼我們希望配置在部署應用程序時變得模糊。 – jfzr

+0

好吧,我明白了。問題是,如果有人想要,弄清楚一個混淆的文件總是可能的。事實上,如果有任何東西在用戶手中,它可能會被破解。沒有完美的安全性這樣的事情,但混淆甚至遠不是好的安全性。我建議你調查是否可以基於某種配置生成war文件(刪除所有不相關的代碼),而不是基於某種配置運行,如果這樣做合理的話。 – jackgu1988

回答

0

使用environment variables

String value = System.getEnv(myKey); 

其在OS經由export foo=bar(* nix中)或SET foo=bar(窗口)中所定義,或系統性能:

String value = System.getProperty(myKey); 

其上java命令定義行,例如java -DmyKey=myValue ...

+0

沒有一個好主意,因爲它會降低我的代碼可移植性,並且仍然可以輕鬆訪問配置。 – jfzr