2014-10-31 59 views
1

我想從正在運行的java進程中隱藏參數(密碼複述)(可以從命令行看到)。如何從java進程中隱藏參數?

例如,當我在CMD輸入JPS -m,它顯示了我所有的Java進程,其參數一起:運行JPS後

輸出-m:6120 someproject.jar -password

哪裏6210是pid。

我需要該密碼才能運行java進程。問題是如果我的機器被盜用,有人可能會讀取密碼並可能造成進一步損害。

一種解決方案可能是將密碼存儲在本地文件中。但是如果機器受到損害,仍然有人可以得到它。

任何想法我如何繼續?

在此先感謝。

update1:​​密碼被哈希但仍然希望它隱藏。

+0

您可以使用環境變量,並且可以加密密鑰文件。 – 2014-10-31 02:26:54

回答

0

你將在C程序中處理這個問題的方法是寫入提供給main(...)入口點方法的參數列表。欲瞭解更多信息,請閱讀此:

不幸的是, 「覆蓋」 的做法是不提供給Java應用程序。從純Java來看,這根本不可能。即使使用本地代碼庫,也很難找到內存中存儲(本地)參數向量的位置。

(除此之外,還有其中的參數暴露...應用擦除之前一個小的時間窗口。)


所以最好的辦法是通過祕密信息的另一種方式。例如,通過環境變量傳遞祕密信息,通過具有訪問限制的臨時文件或通過標準輸入。