java虛擬機內置的安全特性
- 作者:新網(wǎng)
- 來源:新網(wǎng)
- 瀏覽:100
- 2018-05-07 11:27:10
java虛擬機在執(zhí)行字節(jié)碼時還進行其他一些內置的安全機制的操作。包括:1.類型安全的引用轉換。2.結構化的內存訪問(無指針算法)。3.自動化垃圾收集(不必顯式地釋放被分配的內存)。4.數(shù)組邊界檢查。5.空引用檢查。
<
div>
java虛擬機在執(zhí)行字節(jié)碼時還進行其他一些內置的安全機制的操作。包括:1.類型安全的引用轉換。2.結構化的內存訪問(無指針算法)。3.自動化垃圾收集(不必顯式地釋放被分配的內存)。4.數(shù)組邊界檢查。5.空引用檢查。
java程序只能使用類型安全,結構化的方法去訪問內存
這樣可以避免黑客知道一個類裝載器在內存中的位置,賦予一個指針指向那塊內存,從而對類裝載器的數(shù)據(jù)進行操作,而達到破壞安全系統(tǒng)的目的。
未指明運行時數(shù)據(jù)
空間在java虛擬機內部是怎樣分布的
運行時數(shù)據(jù)空間是指一些java虛擬機用來存儲一個運行時java程序所需的內存空間。包括:java棧(每個線程一個),一個存儲字節(jié)碼的方法區(qū),以及一個垃圾收集堆(用來存儲由運行的程序創(chuàng)建的對象)。java虛擬機規(guī)范并未決定使用什么數(shù)據(jù)結構來表示運行時的數(shù)據(jù)空間,并且存放在內存中的哪個位置。這樣,黑客就不能夠憑借class文件中的內容,知道內存中數(shù)據(jù)的內存布局。這樣,即使能夠突破java虛擬機的內存訪問限制,也會無法找到他們想找到的內容。但是可以使用本地方法來達到破壞內存的目的。
異常的結構化錯誤處理
當一個違反安全的行為發(fā)生時,java虛擬機會做一些異常的結構化處理,java虛擬機將拋出一個異?;蛘咤e誤,而不是崩潰。這個異?;蛘咤e誤將導致這個線程死亡,而不是整個系統(tǒng)陷入癱瘓。異常機制使程序能夠將控制從發(fā)生異常的地方轉到處理這個異常的情況。
安全管理器和java api
java安全模型的前三個組成部分-類裝載器體系結構,class文件檢驗器和java內置的安全特性一起達到一個共同的目的:
保持java虛擬機實例和它正在運行的應用程序的內部完整性,使得它們不受惡意或者有漏洞的代碼侵犯。
java安全模型的第四部分:安全管理器:主要用于保護虛擬機的外部資源不被虛擬機內運行的文件或者有漏洞的代碼侵犯。
安全管理器是一個單獨的對象,在運行的java虛擬機中,它在訪問控制--對于外部資源的訪問控制--中起中樞作用。
安全管理器負責兩個方面的工作:
1)說明一個安全策略
2)執(zhí)行這個安全策略
java安全模型的不足
無法阻止惡意移動代碼不斷分配內存直到內存耗盡
無法阻止惡意代碼不斷生成線程
其實不僅是惡意代碼,我們自己寫代碼的時候也要避免不斷分配內存和不斷生成線程的現(xiàn)象的產(chǎn)生。