2016-01-06 61 views
2

是否可以強制JVM檢查在類加載器上加載的每個JAR是否都已簽名?是否有可能強制JVM檢查每個jar是否必須簽名?

我期望的行爲是:如果簽名是錯誤的或jar文件沒有簽名,JVM崩潰,否則程序運行順利。

+0

嘿@endrigoantonini,你知道了嗎? –

+0

@ThiagoLeãoMoreira可惜沒有。我試圖在配置甚至屬性文件中找到很多選項,但沒有找到。你有任何線索嗎? – endrigoantonini

+0

還沒有,我在一個項目中工作,其中一個供應商說這是可行的......但我沒有找到任何文件/文章說明它是可行的。也許是一個特殊的類加載器? –

回答

2

這當然是可能的(畢竟security is a central tenant of Java's design philosophy),但是通常Java懶惰地處理這些問題,而不是在JVM啓動時。

generally recommended strategy將安裝一個安全管理器,用於防止訪問OS或JVM的關鍵部分的任何不可信代碼(信任由與安全管理器關聯的policy file定義)。但是,這些不受信任的代碼仍然可以在JVM沙箱中運行,並且在不可信代碼試圖跳出沙箱之前,您的應用程序不會崩潰。通常這被視爲一個功能。

如果您確實需要在運行時驗證所有Jars是否已簽名,您可以檢查類路徑以獲取所有正在加載的Jars並檢查其內容以驗證它們是否已簽名。 This answer提供了詳細說明如何執行此操作的示例代碼。

然而,更好的做法是避免即使在首位不可信的代碼,這是其中jarsigner應用進來起轉JVM。添加任何罐子到類路徑與jarsigner驗證它們,你可以確信之前,您JVM僅運行受信任的代碼。一旦JVM啓動,你的選擇就會受到更多的限制,所以最好的方法就是隻要你對你的安全策略或加載的類有信心就啓動JVM。

相關問題