• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    一種在Java虛擬機中安全運行第三方代碼的方法技術

    技術編號:8271636 閱讀:184 留言:0更新日期:2013-01-31 03:57
    本發明專利技術公開了一種利用JVM提供的自定義類加載器的技術實現安全運行不可控的第三方代碼的方法。通過控制第三方代碼中可以使用的本地模塊和類,可以有效限制其對外部資源的訪問,同時也可以隔離多個同時運行的第三方代碼。本發明專利技術也提供了在第三方代碼中以可控的方式透明訪問本地資源的方法。

    【技術實現步驟摘要】
    本專利技術涉及信息安全領域,特別涉及一種安全運行不可控的第三方代碼的方法。
    技術介紹
    軟件或服務器往往需要允許用戶執行自定義的代碼以實現高度的可定制性或安全性。但是由于第三方編寫的代碼的不可控性,限制其運行環境以保護服務器資源或上層軟件的正常運行就成了一個很重要的問題。JVM是Java Virtual Machine (Java虛擬機)的縮寫,JVM是一種用于計算設備的規范,它是一個虛構出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現的。JVM屏蔽了與具體操作系統平臺相關的信息,使Java程序只需生成在Java虛擬機上運行的目標代碼(字節碼),就可以在多種平臺上不加修改地運行。JVM在執行字節碼·時,實際上最終還是把字節碼解釋成具體平臺上的機器指令執行。在JVM中使用一個類時,該類的加載過程是唯一可以在外部進行干預的,這可以通過JVM提供的自定義類加載器來實現。通常JVM中引入自定義類加載器的主要目的是實現代碼的熱部署,如OSGi系統等。OSGi (Open Service Gateway Initiative)技術是面向Java的動態模型系統。OSGi服務平臺向Java提供服務,這些服務使Java成為軟件集成和軟件開發的首選環境。OSGi技術提供允許應用程序使用精煉、可重用和可協作的組件構建的標準化原語。這些組件能夠組裝進一個應用和部署中。JVM虛擬機提供的安全性主要通過虛擬機的安全策略文件實現,通過安全策略文件控制JVM中類對資源的訪問(如文件系統和網絡資源等)。但是在實際應用中,往往需要控制第三方代碼本身不能直接訪問一些外部資源(如文件、網絡和一些本地模塊的加載等),但是可以通過調用本地提供的方法來訪問,而且JVM同時運行多個不同的第三方代碼時還要實現代碼間的相互隔離,這時只通過在JVM啟動時靜態地提供一個安全策略文件很難實現。
    技術實現思路
    有鑒于此,本專利技術提供了一種在JVM上安全運行第三方代碼的方法,利用JVM提供的自定義類加載器的技術來控制第三方代碼的本地模塊和類的加載,只允許第三方代碼加載和使用系統提供的已封裝好業務邏輯的類,第三方代碼對外部資源的訪問只能通過上述系統提供的已封裝好的業務邏輯類的接口執行,第三方代碼本身不能直接訪問外部資源,從而實現安全訪問外部資源。根據本專利技術,提供一種在Java虛擬機中安全運行第三方類的方法,該方法包括 創建自定義加載器,所述自定義加載器的父加載器為Java虛擬機當前線程的類加載器; 通過所述自定義加載器來加載第三方類,由所述自定義加載器判斷是否允許所述第三方類加載特定的系統類;如果允許,則所述自定義加載器委托其父加載器加載所述系統類; 若不允許,則拋出異常,從而控制所述第三方類中所能使用的類。根據本專利技術的一個方面,根據需要,能夠同時創建多個所述自定義加載器以執行多份所述第三方類。根據本專利技術的一個方面 ,關于所述第三方類所允許訪問的類和/或所不允許訪問的類的信息存放在所述自定義類加載器能夠找到的存放位置。根據本專利技術的一個方面,所述信息存放在特定文件中,或所述信息存放在數據庫中,或所述信息直接寫入在程序代碼中。根據本專利技術的一個方面,所述自定義類加載器加載所述第三方類時,確定所述第三方類可使用和/或不可使用的類。根據本專利技術的一個方面,如果所述自定義加載器判斷出所述第三方類加載不允許加載的類時,拋出異常。根據本專利技術的一個方面,分別采用不同的加載器來分別加載所述第三方類以防止惡意訪問。附圖說明圖I為按照本專利技術的一種在JVM上安全運行第三方代碼的方法的一優選實施例的流程示意圖。圖2為圖I所示實施例中結構框圖。具體實施例方式當JVM需要加載第三方代碼時,創建一個自定義的類加載器,其父加載器設置為JVM當前線程的默認類加載器(根據本專利技術的一個實施例,通常就是SystemClassLoader),通過自定義類加載器的一個實例來加載第三方代碼。在自定義類加載器中通過一個可使用類的列表(或不可使用類的列表)來控制第三方代碼中外部類的使用,自定義類加載器的功能如下 1、對于允許使用的本地模塊中的類(如java.lang. String等,所有的java類都要繼承java. lang. Object類,下面不再贅述),直接委托其父加載器(SystemClassLoader)執行,這也是JVM類加載器的默認行為,由此第三方代碼可以正常使用這些類; 2、對于不允許使用的本地模塊中的類(如java.net. *和java. io. *等),自定義類加載器將直接拋出ClassNotFound異常; 3、需要訪問外部資源的業務邏輯封裝于單獨的功能類中(下文稱為Function類),自定義類加載器將直接由其父加載器加載Function類,由此Function類中再加載使用其它類時(如java. net. *等限制第三方代碼使用的類)將直接使用父加載器,從而安全地繞過自定義類加載器的限制。如此便可以實現第三方代碼本身只能使用允許的類,可以輕易地斷絕其訪問外部資源(此處指所有不允許訪問的資源包含虛擬機自身內存等)的途徑,同時可以通過Function類提供的高級接口以可控的方式訪問外部資源。通常JVM提供的非訪問外部資源的類可以由第三方代碼安全調用,如java. lang.String以及java. math模塊中的等大部分的類都是如此。對待這些類的加載,根據本專利技術的一個是實施例,自定義的類加載器MyClassLoader的行為即是JVM類加載器的默認行為,即雙親代理模式(即,優先委托自己的父加載器加載,父加載器不能加載時才自己加載。)。而對于java. io、java. net以及java. thread等模塊中的類,自定義類加載器將會打破JVM的默認行為,從而拒絕加載這些類;自定義類加載器正常(委托其父加載器)加載Function類后,Function類便屬于自定義類加載器的父加載器,所以Function類中的類加載將由自定義類加載器的父加載器負責,從而可以在Function中實現訪問外部資源實現業務邏輯,Function代碼由功能提供者實現,是可控的,而第三方代碼只能通過這一條途徑來訪問外部資源,因此也是可控的。自定義類加載器中的允許或不允許加載的類列表可以是預置的,所有的第三方類代碼使用相同的配置;也可以是加載不同的第三方類代碼時現讀取的,每個類有不同的權限,由此在JVM中實現動態的代碼權限控制。在JVM中,通過類加載器和類名才能確定一個類,對于不同的第三方代碼,都創建一個新的自定義類加載器實例來加載。由于第三方代碼加載時需要不同的類加載器,所以第三方代碼之間無法相互訪問,從而實現了不同第三方代碼之間的隔離。當所執行的第三方代碼之間不需要隔離時(如是同一個用戶的代碼),則可以使用同一個類加載器加載,從而節省系統資源。 上述自定義類加載器通常可以通過重載ClassLoader類的f indClass和IoadClass方法即可實現,此為Java中的標準方法,本專利技術中不再贅述。 為使本專利技術的目的、技術方案及優點更加清楚明白,以下結合附圖描述本專利技術的優選實施例,對本專利技術進一步詳細說明。如圖I所示,本專利技術中自定義類加載器加載一個類包括如下步驟其中,在該類的實例創建時本文檔來自技高網
    ...

    【技術保護點】
    一種在Java虛擬機中安全運行第三方類的方法,其特征在于,該方法包括:創建自定義加載器,所述自定義加載器的父加載器為Java虛擬機當前線程的類加載器;通過所述自定義加載器來加載第三方類,由所述自定義加載器判斷是否允許所述第三方類加載特定的系統類;如果允許,則所述自定義加載器委托其父加載器加載所述系統類;若不允許,則拋出異常,從而控制所述第三方類中所能使用的類。

    【技術特征摘要】
    1.一種在Java虛擬機中安全運行第三方類的方法,其特征在于,該方法包括 創建自定義加載器,所述自定義加載器的父加載器為Java虛擬機當前線程的類加載器; 通過所述自定義加載器來加載第三方類,由所述自定義加載器判斷是否允許所述第三方類加載特定的系統類; 如果允許,則所述自定義加載器委托其父加載器加載所述系統類; 若不允許,則拋出異常,從而控制所述第三方類中所能使用的類。2.根據權利要求I所述的方法,其特征在于,根據需要,能夠同時創建多個所述自定義加載器以執行多份所述第三方類。3.根據權利要求I所述的方法,其特征在于,關于所述第三方類所...

    【專利技術屬性】
    技術研發人員:不公告發明人
    申請(專利權)人:北京深思洛克軟件技術股份有限公司
    類型:發明
    國別省市:

    網友詢問留言 已有0條評論
    • 還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 亚洲av中文无码乱人伦在线播放| 免费无码又爽又刺激网站直播| 91精品国产综合久久四虎久久无码一级 | 丰满熟妇乱又伦在线无码视频| 无码AV波多野结衣久久| 无码人妻久久一区二区三区免费丨| 人妻无码中文字幕| 亚洲日韩国产二区无码| 亚洲av中文无码乱人伦在线播放| 无码av无码天堂资源网| 无码精品一区二区三区在线 | 青青爽无码视频在线观看| 国产品无码一区二区三区在线蜜桃| 99无码精品二区在线视频| 国精品无码一区二区三区在线| 无码不卡中文字幕av| 亚洲AV日韩AV永久无码色欲| 无码日韩人妻精品久久蜜桃| 无码人妻精品一区二区蜜桃百度| 性色AV蜜臀AV人妻无码| 亚洲熟妇无码八V在线播放| 色偷偷一区二区无码视频| 中文字幕人妻无码专区| 国产激情无码一区二区三区| 国产精品JIZZ在线观看无码| 无码少妇一区二区浪潮免费| 中文字幕亚洲精品无码| 久久久久亚洲Av无码专| 亚洲AV综合色区无码二区偷拍| 国产免费无码一区二区| 亚洲精品无码久久一线| 国产丰满乱子伦无码专区| 成人无码网WWW在线观看| 中国少妇无码专区| 亚洲动漫精品无码av天堂| 最新高清无码专区| 无码免费一区二区三区免费播放| 久久无码专区国产精品s| 日韩人妻无码一区二区三区99| 少妇伦子伦精品无码STYLES| 亚洲日韩乱码中文无码蜜桃|