Java語言安全模型是其有別於傳統的編程語言的一個很重要的特色,採用一種沙箱模型隔離了Java的運行環境與具體的操做系統,使得Java在網絡環境下可以更爲安全的運行。理解Java的安全模型,可以幫助咱們站在更高的層面理解Java的底層實現,在適當的時機及時找出問題所在。html
沙箱模型的創建主要涉及了Java語言相關的如下幾個部分:編程
運行時包:指由同一個類加載器裝載的、屬於同一個包的、多類型的集合。任意兩個Java類包訪問權限適用的前提是:屬於同一個包,還必須是屬於同一個運行時包。這樣規定的動機之一就是防止一個由用戶自定義類加載器裝載的Java類非法獲取到Java核心API的包訪問權限。數組
例如:經過動態類加載一個名爲Java.lang.Virus的Java類可以被裝載到內存,因爲這個類是屬於包Java.lang。若是不加以限制,這個外部的類就會擁有包內其餘類的包訪問權限。安全
雙親託管模型:保證基本Java類庫不會被惡意代碼任意覆蓋,具體的內容能夠參考我以前的文章。網絡
類文件的校驗通常有四個步驟:編程語言
包括了以下幾個方面:編碼
檢測Java虛擬機堆外部資源訪問的合法性,即界定沙盒的邊界。不會被默認設置,若是須要檢測在編碼中須要自行編寫。參見Java.lang.SecurityManager下的一系列以「check」開頭的方法。操作系統