摘 要 本文先概述了Java開發(fā)平臺的整體情況,接著,對Java開發(fā)平臺的安全性進(jìn)行研究,Java開發(fā)平臺的安全性主要從體系結(jié)構(gòu)、程序語言、API功能等三個方面進(jìn)行闡述,作為以后的參考。
【關(guān)鍵詞】Java開發(fā)平合 安全性 體系 程序語言 API功能
1 Java開發(fā)平臺概述
1995年,Java被Sun Micro system公司推出的,其屬于一種程序設(shè)計語言,以前作為一種Oak程序設(shè)計語言,主要對有線電視機(jī)頂盒、PDA等設(shè)備微處理器進(jìn)行控制,到了1994年,把其叫做Java,其具有顯著的安全、可移植、兼容等性能。隨著Internet的發(fā)展,使Java也得到發(fā)展。其被作為一種最流行的程序開發(fā)語言使用在網(wǎng)絡(luò)上,支持Java的編程語言的開發(fā)主要是UZtraEdit、JavaDevelo pmentKit(JDK)等等。
2 Java開發(fā)平臺安全性研究
2.1 體系結(jié)構(gòu)
在Java虛擬機(jī)中運(yùn)行Java的體系結(jié)構(gòu),其原理包括:編碼、運(yùn)行等。在實施編譯時,將Java源代碼文件編譯為二進(jìn)制的字節(jié)碼文件,在具體運(yùn)行時,需要使用類加載器完成加載clan文件。其中涉及了二進(jìn)制字節(jié)碼文件、原始的API clan文件等,同時,對其進(jìn)行連接、初始化,接著執(zhí)行引擎運(yùn)行,當(dāng)字節(jié)碼校驗器校驗之后。而執(zhí)行引擎,包括有解釋器、JIT代碼生成器。通過Java的體系結(jié)構(gòu),確保其安全運(yùn)行。對于Java應(yīng)用程序,一旦使用標(biāo)準(zhǔn)的API功能,則可以直接應(yīng)用與多種平臺,使Java開發(fā)平臺具有網(wǎng)絡(luò)移動性,進(jìn)而形成一種新的軟件模式,在網(wǎng)絡(luò)的情況下,把軟件、數(shù)據(jù)輸入給客戶端,為安全性提供更好的支持。
2.2 Java程序語言
在開發(fā)Java時,Sun Micro system公司把安全性放在第一位,而Java程序語言,在層次上包括幾個方面,充分說明了Java開發(fā)平臺的安全性。
(1)語言規(guī)范和編譯器。在語言規(guī)范、編譯器的基礎(chǔ)上,源代碼更加安全,在設(shè)計Java程序語言時,需要把C,C++中具有的非安全操作及時限制,同時,程序語言禁止直接去訪問內(nèi)存,通過引用分配對象的方式來進(jìn)行。而在Java程序語言中,往往具有真正的數(shù)組,為了對數(shù)組進(jìn)行訪問,可以用嚴(yán)格的邊界完成檢查。關(guān)于Java源代碼文件的編譯,涉及到的轉(zhuǎn)換有必要進(jìn)行合法性地檢查,通過檢查,確保語言的規(guī)范,但是他也存在一定的不足,而字節(jié)碼校驗恰好解決了這個不足。為了保證源代碼的合法性,往往使用符合程序語言規(guī)范的編譯器,除非遇到惡意的攻擊,編譯器會被更改,進(jìn)而出現(xiàn)非安全、非規(guī)范的字節(jié)碼。所以,通過字節(jié)碼校驗,檢查被篡改的那些編譯器編譯的代碼,使字節(jié)碼的格式有保證。
(2)類加載器存在于Java虛擬機(jī)中,其會加載clan文件、原始的API clan文件等,同時,對應(yīng)用程序進(jìn)行鏈接與初始化。在對字節(jié)碼加載時,也對其完成字節(jié)碼驗證,確保字節(jié)碼準(zhǔn)確。因此,在Java的程序語言中,往往有一些防護(hù)措施,包括兩個方面,其一,其具備特殊的權(quán)限,在Java虛擬機(jī)中,能夠創(chuàng)建一個,或安裝一個新的加載器。其二,對于全部新安裝的類加載器,需要有一個副加載器,確保以前加載器被保護(hù)起來,尤其對于JavaAPI類。其作為Java安全機(jī)制的一個核心類。
(3)在Java虛擬機(jī)中,還有一個安全管理器,即“沙箱”。而這個沙箱,主要是把本地資源隔離與Java虛擬機(jī)中的資源,使得本地操作系統(tǒng)或應(yīng)用程序不被虛擬機(jī)中的惡意代碼破壞。這個沙箱體系作為Java開發(fā)平臺一個最大的優(yōu)勢和特點(diǎn),其為不同代碼單元制定了訪問控制權(quán),確保其安全,并且授予其代碼。
(4)隨著新版本Java工具的開發(fā),安全管理器被訪問控制器替換了,其具有更好地安全策略,使用起來更加靈活,其包括三種形式,其一,隨著安全策略的實施,能夠決定是不是去訪問系統(tǒng)的關(guān)鍵資源。其二,對代碼執(zhí)行標(biāo)記,使其具有特權(quán),并制造影響給后續(xù)的訪問。其三,為了獲得當(dāng)前調(diào)用的上下文,往往以快照的形式進(jìn)行,同時,及時完成保存。
2.3 Java的API功能
2.3.1 認(rèn)證與授權(quán)
在Java開發(fā)平臺中,通過發(fā)揮API功能,為其提供了身份認(rèn)證的組件,從而能夠?qū)Ξ?dāng)前執(zhí)行各種類型代碼的用戶進(jìn)行準(zhǔn)確地識別,包括:應(yīng)用程序、applet、heano等,而JARS有效地補(bǔ)充了現(xiàn)有的安全策略內(nèi)容,而用戶與任務(wù)起源影響其決定性。對于Java開發(fā)平臺,同意JARS運(yùn)行嵌人式的執(zhí)行方案,進(jìn)而確保JARS與Java的內(nèi)置安全策略的底層認(rèn)證與授權(quán)更加獨(dú)立,為新的認(rèn)證與授權(quán)技術(shù)更加有效。
2.3.2 加密擴(kuò)展
Java開發(fā)平臺在使用JCE程序的基礎(chǔ)上,為其加了密鑰。JCE使用javax.crypto .Cipher類對對象的進(jìn)行加密或解密。也為接口寫入,或讀出數(shù)據(jù)進(jìn)行加密與解密,對于這個類,給Java開發(fā)平臺多種加密的算法、模式、填補(bǔ)的機(jī)制。
2.3.3 安全套接字?jǐn)U展
通過Java開發(fā)平臺,開發(fā)者得到了安全I(xiàn)nternet通信的擴(kuò)展包,即JSSE。通過擴(kuò)展包,形成了SSL與TLS的Java技術(shù)版本,提供給開發(fā)者諸多功能,比如,給數(shù)據(jù)加密、確保消息的完整、認(rèn)證可選客戶端的身份、認(rèn)證服務(wù)器的身份等。在執(zhí)行JSSE的安全策略時,需要在SSL環(huán)境下進(jìn)行,利用JDK的kevtool工具來管理兩個庫。其二,在使用JSSE時,套接字的獲得是從JSSE套接字工廠得到的,通過這種方式,可以直接利用JSSE提供的程序框架,定義HTTP,F(xiàn)TP,TCP/IP等協(xié)議。
參考文獻(xiàn)
[1]王海,于佳.Java開發(fā)工具分析與研究[J].吉林化工學(xué)院學(xué)報,2016(03):67-70.
[2]文其瑞.基于Java EE應(yīng)用程序的web服務(wù)安全性分析[J].電子制作,2013(16):152.
[3]趙爭東.基于Java的數(shù)據(jù)庫應(yīng)用框架的研究設(shè)計和探索[J].信息系統(tǒng)工程,2015(12):12-16.
作者簡介
王浩(1993-),男,陜西省渭南市人。西安文理學(xué)院信息工程學(xué)院2013級在讀學(xué)生,主要從事java開發(fā)。
作者單位
西安文理學(xué)院信息工程學(xué)院 陜西省西安市 710065