2016-03-05 86 views
0

根據瞭解其可能使用反射操縱關鍵字final的一般概念。可以在安裝級別默認啓用java安全管理器嗎?

也可以使用安全管理器來防止相同的情況。

是否有可能默認啓用安全管理器(在jdk安裝級別)?

參考文獻:

更新1:

鑑於其需要爲了啓用工作,它不太可能的可能。

我得到的最接近的方法是將System.setSecurityManager(new SecurityManager())放置在一個類的靜態塊中,將它捆綁爲一個jar並將其放置在'jre/lib/ext'中,只是發現默認情況下它未加載,而且我們仍然需要使用Class.forName。

因此,除此之外,唯一的選擇是使用-Djava.security.manager標誌或以編程方式添加。

回答

0

您可以使用_JAVA_OPTIONS環境變量設置默認的Java系統屬性,因此您可以在系統上設置_JAVA_OPTIONS="-Djava.security.manager",這將確保所有Java進程在啓用安全管理器的情況下運行。

當然,這個變量可能會被覆蓋,所以根據您的環境它可能不夠安全。

如果你想確保一個特定類的最後一個成員不能被使用反射覆蓋,另一個選擇是在該類中放置一個靜態初始化塊來檢查安全管理器是否已安裝並拋出如果不是,則爲SecurityException。

+0

猜是的。我試圖達成的目標是避免依賴程序化方法,因爲依靠加載的類本身並不一定能得到保證。這就是爲什麼我正在尋找一個可以保證的選項,並且適用於整個JVM,並且最好是不可逆的(即安裝管理器在安裝後不應該未安裝)。儘管感謝您的回答。 –