張?zhí)焘?/p>
摘要:隨著互聯(lián)網(wǎng)產(chǎn)業(yè)的快速發(fā)展以及云計(jì)算的廣泛應(yīng)用,Java由于其自身所具有的優(yōu)點(diǎn),得到了廣泛的應(yīng)用。但是,在Java程序應(yīng)用的過(guò)程當(dāng)中,其安全性問(wèn)題引起了廣泛的關(guān)注。網(wǎng)絡(luò)應(yīng)用程序的安全問(wèn)題不僅與其所涉及的內(nèi)容有著直接關(guān)系,同時(shí)也離不開(kāi)相關(guān)的安全管理。在Java程序應(yīng)用的過(guò)程當(dāng)中,如何保證其應(yīng)用的安全性,是一項(xiàng)急需解決的課題。文章在研究中主要分析了Java的安全機(jī)制,Java權(quán)限以及安全保護(hù)策略,以期對(duì)Java保護(hù)有所助益。
關(guān)鍵詞:Java應(yīng)用程序;安全性;安全機(jī)制;策略
以Java作為程序開(kāi)發(fā)語(yǔ)言,其開(kāi)發(fā)的程序最大特點(diǎn)是平臺(tái)的無(wú)關(guān)性,尤其開(kāi)發(fā)的程序能夠在不同平臺(tái)上進(jìn)行移植,是企業(yè)級(jí)應(yīng)用開(kāi)發(fā)時(shí)常用的語(yǔ)言。Java是一種安全性的語(yǔ)言,并且經(jīng)常被用來(lái)作為安全設(shè)計(jì)中的重要部分。當(dāng)然,在Java設(shè)計(jì)語(yǔ)言應(yīng)用當(dāng)中也存在有很多缺陷,難以在全方位滿足安全性的需求,從Java本身來(lái)看其保護(hù)方法比較少,而且這些方法往往不能取得很好的成效,這樣導(dǎo)致了程序員設(shè)計(jì)的程序很容易被別人復(fù)制。因此,在Java程序應(yīng)用當(dāng)中,如何保證程序的安全性是重要的課題。
1.Java安全機(jī)制
1.1安全策略
Java是指其環(huán)境的安全主要是由安全策略決定的,在本質(zhì)上安全策略指的是一個(gè)訪問(wèn)矩陣,具體指的是何種系統(tǒng)資源、使用何種方式以及在什么環(huán)境下能夠被訪問(wèn)。一個(gè)完整的安全策略指的是從描述代碼的特征到訪問(wèn)權(quán)限間的映射。在Java系統(tǒng)當(dāng)中,Java安全體系主要是由應(yīng)用保護(hù)域以及系統(tǒng)保護(hù)域兩部分。在這之中,系統(tǒng)保護(hù)域的主要對(duì)象是文件系統(tǒng)以及網(wǎng)絡(luò)套接字等系統(tǒng)資源的訪問(wèn)進(jìn)行控制;應(yīng)用保護(hù)域的對(duì)象主要是系統(tǒng)當(dāng)中組建以及應(yīng)用程序某部分訪問(wèn)進(jìn)行控制,是系統(tǒng)中的具體的應(yīng)用程序。在安全策略當(dāng)中保護(hù)的應(yīng)用能夠有效提升Java應(yīng)用的安全。并且在實(shí)際應(yīng)用的過(guò)程當(dāng)中,會(huì)采取定制權(quán)限的方式對(duì)特權(quán)代碼的訪問(wèn)進(jìn)行限制。
1.2Java認(rèn)證以及授權(quán)服務(wù)
在實(shí)際運(yùn)行的過(guò)程之中,Java需要根據(jù)依托于安全策略給運(yùn)行代碼相應(yīng)的權(quán)限,在以代碼為基礎(chǔ)的訪問(wèn)控制方式以及系統(tǒng)依賴代碼各種特性的安全措施,有很大差異,并且能夠更加合理。但是,由于Java被用于多用戶環(huán)境中,這就要求其必須與各種用戶進(jìn)行溝通,并且根據(jù)用戶權(quán)限的不同給用戶不同的許可。在應(yīng)用的過(guò)程中,Java通過(guò)對(duì)用戶進(jìn)行認(rèn)證和授權(quán)服務(wù),能夠?yàn)殍b別用戶以及對(duì)用戶進(jìn)行權(quán)限進(jìn)行分配以及提供準(zhǔn)確化的編程接口,并在J2SEl.4中進(jìn)行集成。這樣在對(duì)訪問(wèn)行為進(jìn)行控制時(shí),可以選擇以代碼為中心的控制模式,也可以選擇以用戶為中心的控制模式,也可以將兩者結(jié)合起來(lái)。JASS的應(yīng)用提供了很重要的服務(wù),具體指的是認(rèn)證和授權(quán)。在認(rèn)證環(huán)節(jié)當(dāng)中只要知道是誰(shuí)在運(yùn)行代碼,而不用去討論和管理代碼是怎樣運(yùn)行的。授權(quán),指的就是對(duì)具體的用戶操作權(quán)限進(jìn)行確定。
1.3安全訪問(wèn)控制
在Java使用的過(guò)程當(dāng)中,應(yīng)用程序安全模型能夠?qū)υL問(wèn)工作進(jìn)行有效管理,并可以對(duì)訪問(wèn)進(jìn)行配置和一定調(diào)整。其中所有的訪問(wèn)資源都是訪問(wèn)權(quán)限的對(duì)象。在具體的應(yīng)用過(guò)程當(dāng)中,通過(guò)權(quán)限設(shè)置提供以及拒絕對(duì)用戶提供資源,這樣在運(yùn)行的過(guò)程中,就確保了用戶在相關(guān)指令的基礎(chǔ)上進(jìn)行操作。Java在其運(yùn)行的過(guò)程其運(yùn)行環(huán)境的安全性主要是有安全策略執(zhí)行。安全策略能夠在確定資源類型的基礎(chǔ)之上,根據(jù)環(huán)境因素選擇科學(xué)的訪問(wèn)方式。當(dāng)前Java程序在不同的平臺(tái)上進(jìn)行運(yùn)行時(shí),為了保證運(yùn)行的安全,系統(tǒng)安全需要依靠應(yīng)用級(jí)上,相對(duì)建立在操作系統(tǒng)上的系統(tǒng)級(jí)安全,能夠起到更好的效果。從這一方面來(lái)說(shuō),在Java的應(yīng)用級(jí)上,擁有很多技術(shù),從而能夠有效確保系統(tǒng)安全,特別是在有關(guān)的應(yīng)用程序在采取基本的保護(hù)之后,能夠使系統(tǒng)的安全性得到很大提高,能夠防范各種風(fēng)險(xiǎn)。
2.Java的權(quán)限以及保護(hù)策略分析
2.1保存本地?cái)?shù)據(jù)
在本地存儲(chǔ)獨(dú)立應(yīng)用程序存在一個(gè)問(wèn)題,也就是在運(yùn)行應(yīng)用程序的用戶一般需要讀取以及寫(xiě)入數(shù)據(jù)文件,這就表明在不經(jīng)過(guò)應(yīng)用程序的情況下就能夠修改以及讀取數(shù)據(jù)。在防范這類風(fēng)險(xiǎn)時(shí),最簡(jiǎn)單的做法就是將數(shù)據(jù)存儲(chǔ)于不同的位置。如果信息必須在本地進(jìn)行數(shù)據(jù)存儲(chǔ)時(shí),通過(guò)借助于JCE就可以對(duì)數(shù)據(jù)進(jìn)行加密,之后將其存儲(chǔ)到文件當(dāng)中。在具體應(yīng)用之中,對(duì)稱密鑰算法有更大的優(yōu)勢(shì),因此,在進(jìn)行加密時(shí)一般都會(huì)選擇對(duì)稱密鑰。但是,對(duì)稱密鑰也有其缺陷,對(duì)稱密鑰沒(méi)有公私結(jié)合的安全性。在密鑰生成中,為了保證安全,會(huì)選擇在密鑰中加入口令和鹽。口令可以自己決定,在解密當(dāng)中只有通過(guò)口令才可以得到明文。鹽具體指的是一個(gè)無(wú)關(guān)的數(shù)據(jù)序列,并可以將其加入到加密數(shù)據(jù)之中,在揭秘時(shí),需要鹽從明文當(dāng)中去除,采用這種方式可以有效防止黑客的逆向處理。
2.2防止被盜版
在進(jìn)行設(shè)計(jì)的過(guò)程中,盡管系統(tǒng)當(dāng)中的各種安全漏洞被有效彌補(bǔ)了,但是,實(shí)際上仍舊容易受到攻擊,也就是代碼的濫用。即使不存在應(yīng)用程序源代碼,對(duì)技術(shù)水平比較高的技術(shù)人員而言,通過(guò)使用與設(shè)計(jì)者意愿不同的方式也可使用程序。因此,在程序使用的過(guò)程當(dāng)中,必須采取合理的措施保證不會(huì)被盜版。雖然,從目前來(lái)看,還沒(méi)有有效的方法防止盜版,但是在實(shí)際工作當(dāng)中通過(guò)合理的使用JCE,能夠確保程序有效規(guī)避攻擊。在這之中一個(gè)十分有效的方法就是設(shè)計(jì)一個(gè)全面的軟件授權(quán)策略。在以前,在這一方面很多機(jī)制都是使用哈希碼或者是簡(jiǎn)單的加密進(jìn)行傳輸和確認(rèn)授權(quán)信息。這些技術(shù)仍然可以使用到Java當(dāng)中。在此,可以假定可以對(duì)系統(tǒng)中所有的用戶傳遞一個(gè)專門(mén)的“鑰”,在進(jìn)行解密時(shí),包括了增強(qiáng)授權(quán)方法的各類信息。
2.3EJB安全
J2EE所提供的一個(gè)十分好的特性及時(shí)EJB,通過(guò)對(duì)不同的EJB的使用可以對(duì)組建進(jìn)行實(shí)現(xiàn)。實(shí)體Bean指的就是持續(xù)數(shù)據(jù),會(huì)話Bean代表與客戶端進(jìn)行對(duì)話,并且這也是其主要的功能,消息驅(qū)動(dòng)Bean能夠使EJB處理異步信息。如果在應(yīng)用中只是采取容器提供的J2EE服務(wù),那樣從整體上看EJB抱住是最好的一種J2EE組件類型。EJB實(shí)現(xiàn)允許容器增強(qiáng)安全性,并且此種安全機(jī)制是保證EJB的最好時(shí)間。如果缺乏這樣的安全機(jī)制,任何遠(yuǎn)程用戶只能通過(guò)EJB服務(wù)器并得知遠(yuǎn)程部署的Bean接口信息,就可以訪問(wèn)服務(wù)器并能夠執(zhí)行遠(yuǎn)程方法。
2.4預(yù)防RMI風(fēng)險(xiǎn)
RMI的設(shè)計(jì)很簡(jiǎn)單,并且靈活多變,并且是建立在Java語(yǔ)言的多種特點(diǎn)的基礎(chǔ)之上的,可以容易的實(shí)現(xiàn)網(wǎng)絡(luò)之間方法的調(diào)用,并且默認(rèn)多種全機(jī)制存在。這種用戶通過(guò)調(diào)用遠(yuǎn)程訪問(wèn)方式,能夠?qū)Υ嬖诘陌踩┒催M(jìn)行破解。RMI一般會(huì)在沒(méi)有任何認(rèn)證的情況,通過(guò)明文對(duì)網(wǎng)絡(luò)間的方法進(jìn)行調(diào)用,這樣就出現(xiàn)了很?chē)?yán)重的安全隱患,能夠讓沒(méi)有經(jīng)過(guò)認(rèn)證的用戶也能對(duì)系統(tǒng)信息進(jìn)行訪問(wèn)。應(yīng)用程序的安全,都蘊(yùn)含著矛盾的思想,也就是說(shuō)任何一項(xiàng)安全措施一方面能夠?yàn)楸WC系統(tǒng)安全提供幫助,在另一方面也可能在運(yùn)行的過(guò)程中造成損失,因此,在對(duì)程序進(jìn)行設(shè)計(jì)和開(kāi)發(fā)的過(guò)程中需要給予更多的安全考慮。Java具有多種安全特性,并且作為使用自身基礎(chǔ)實(shí)現(xiàn)的保障平臺(tái)。同時(shí)在Java語(yǔ)言中對(duì)于安全類型以及完整性語(yǔ)義都已經(jīng)作了定義和規(guī)范,但是其仍舊需要虛擬機(jī)所支持的運(yùn)行和保障。這就不難看出,利用現(xiàn)有的各種安全系統(tǒng),建設(shè)一個(gè)體系保障Java的應(yīng)用程序的安全性也是十分必要的。
3.結(jié)語(yǔ)
綜上所述,在使用Java程序的過(guò)程中如何保護(hù)其安全性是一個(gè)復(fù)雜的問(wèn)題。并且對(duì)著其應(yīng)用程序的不斷發(fā)展以及現(xiàn)代技術(shù)的快速進(jìn)步,必須對(duì)齊安全性進(jìn)行深入的研究和探索。在研究過(guò)程中,充分吸收成功案例取得的經(jīng)驗(yàn),并及時(shí)建設(shè)一個(gè)可靠的平臺(tái),才能夠充分發(fā)揮出Java應(yīng)用程序的作用,并向用戶提供更加優(yōu)質(zhì)的服務(wù)。從整體上看,在Java開(kāi)發(fā)平臺(tái)涉及的安全方面的內(nèi)容比較多,因此,要構(gòu)建一個(gè)非常安全的Java應(yīng)用程序是比較困難的。但是,這對(duì)于促進(jìn)Java的應(yīng)用有著十分重要的意義。文章主要研究了Java程序中存在的缺陷,并就其措施進(jìn)行了探討,希望對(duì)Java應(yīng)用程序的安全保護(hù)工作有所幫助。