韓璐瑩
(陜西國際商貿(mào)學(xué)院 陜西 咸陽 712000)
在移動(dòng)互聯(lián)網(wǎng)飛速發(fā)展的時(shí)代背景下,Java Web的應(yīng)用也迎來了前所未有的發(fā)展機(jī)遇,并獲得了更大范圍的應(yīng)用和推廣,在加快信息化社會(huì)建設(shè)及推動(dòng)信息軟件的發(fā)展中發(fā)揮了重要作用。然而,Java Web程序所具備的主要功能就是完成網(wǎng)絡(luò)信息資源的交換和共享,使用戶能夠利用這些程序?yàn)g覽相應(yīng)的數(shù)據(jù)和信息,這樣一來Java Web程序的安全性就很難得到有效保障。因此,需要對(duì)Java Web程序采取相應(yīng)的安全技術(shù),以此來有效解決應(yīng)用程序在運(yùn)行過程中所出現(xiàn)的安全問題。
Java Web應(yīng)用是基于Web技術(shù)及使用Java語言進(jìn)行開發(fā)的程序應(yīng)用,其結(jié)構(gòu)主要分為客戶端和服務(wù)器端。因此,其所面對(duì)的安全威脅通常也來源于這兩部分,特別是在具體應(yīng)用程序的實(shí)際運(yùn)行中,即數(shù)據(jù)交換和資源共享的通信過程。在服務(wù)器端所遭遇的安全威脅大多數(shù)是服務(wù)器在實(shí)際運(yùn)行時(shí)所出現(xiàn)的bug,其他常見的安全威脅還有由于服務(wù)器代碼的運(yùn)行環(huán)境被破壞或者是代碼本身被隱藏等,可表現(xiàn)為資源定位器發(fā)生強(qiáng)制訪問的問題,以及服務(wù)器和操作系統(tǒng)的漏洞。客戶端所面對(duì)的安全威脅則具體表現(xiàn)在技術(shù)人員所使用的開發(fā)技術(shù)有安全隱患和漏洞。在Java Web程序中引入安全技術(shù)可以防止以上問題的出現(xiàn),以確保在數(shù)據(jù)等資源交換的過程中數(shù)據(jù)不會(huì)遭到篡改和破壞,使其完整性、準(zhǔn)確性及保密性得到保障[1]。
Java的安全體系架構(gòu)理念是以安全沙箱的概念為基礎(chǔ)延伸而來,對(duì)模型劃分為需要加載的遠(yuǎn)程代碼及存儲(chǔ)于本地服務(wù)器的本地代碼。存儲(chǔ)在本地服務(wù)器的代碼是可信任、安全的,并且能夠有效訪問本地服務(wù)器上的資源。在具體的Java程序設(shè)計(jì)過程中,該理念能夠?qū)ava 安全體系進(jìn)行補(bǔ)充,使其能夠在保護(hù)域的基礎(chǔ)概念上,提供更為可靠的安全控制。所謂的保護(hù)域即對(duì)應(yīng)用安全和系統(tǒng)安全進(jìn)行了區(qū)分,其中最為核心且重要的就是保護(hù)域的概念,能夠指出當(dāng)前操作環(huán)境中所需要進(jìn)行保護(hù)的重要部分,以此達(dá)到分組需保護(hù)資源和組件的目的。在對(duì)應(yīng)的保護(hù)域中,應(yīng)當(dāng)對(duì)擁有相同權(quán)限的不同類進(jìn)行歸類,以定義保護(hù)域。在加載Java類的有關(guān)安全機(jī)制中,應(yīng)當(dāng)將其基本類的有關(guān)記載引入,從而有效解決加載器間的聯(lián)系問題,這個(gè)過程中Java程序需要使用的所有初始類都是需要加載的,并且其他類型的加載器也是需要通過起動(dòng)方可進(jìn)行加載。而關(guān)于Java的權(quán)限方面,會(huì)借助固定的類Permission來進(jìn)行具體表示。Java也會(huì)提供一部分常用的子類以表示不同應(yīng)用系統(tǒng)的具體權(quán)限,此外還會(huì)賦予其子類與其等級(jí)相適應(yīng)的權(quán)限,借助這樣的方式來實(shí)現(xiàn)Java的具體安全策略[2]。
在與Java相關(guān)的安全策略中,非常重視不同Java程序創(chuàng)建對(duì)應(yīng)的安全策略文件,從而達(dá)到保護(hù)域內(nèi)容進(jìn)行不斷地改進(jìn)和提升的目的,但是不會(huì)改動(dòng)對(duì)應(yīng)用程序的具體代碼。但需要在對(duì)應(yīng)的安全策略文件中,去定義應(yīng)用程序所涉及的具體策略條目,并且按照文件中的對(duì)應(yīng)條目得到所需的安全策略文件。
在與安全屬性相關(guān)的文件中,需要配置3種安全策略類型的文件,其中包括系統(tǒng)安全策略、用戶策略以及應(yīng)用安全策略,通過設(shè)定其系統(tǒng)屬性,可以替代原有的安全策略文件。與此同時(shí),還存在一種情形,就是任何使用程序的人都有權(quán)去修改Java現(xiàn)行的安全策略文件,這樣就容易導(dǎo)致出現(xiàn)大量的安全問題,當(dāng)這種情況發(fā)生時(shí),應(yīng)當(dāng)借助Java命令設(shè)置系統(tǒng)屬性。Java安全策略的文件內(nèi)容涵蓋了眾多條目,能夠進(jìn)行對(duì)應(yīng)授權(quán),但是需要注意的是,這個(gè)過程是需要借助鑰箱來查找相關(guān)的證書及密鑰的。
在進(jìn)行Java Web程序的有關(guān)安全技術(shù)的研究時(shí),可以重點(diǎn)關(guān)注服務(wù)端與客戶端之間的通信過程,即以下幾方面。
(1)應(yīng)用程在代碼層面和程序?qū)用鎸?shí)施對(duì)應(yīng)的安全防范措施時(shí),應(yīng)當(dāng)不斷提升編寫應(yīng)用程序的安全級(jí)別,同時(shí)也需要充分了解目標(biāo)程序本身及其開發(fā)環(huán)境的穩(wěn)定性及安全性。此外,還應(yīng)當(dāng)了解黑客進(jìn)行網(wǎng)絡(luò)攻擊時(shí)常用的技術(shù)手段,也需要了解其心理、目標(biāo)及技術(shù)等內(nèi)容,以此幫助開發(fā)者能夠從不同角度補(bǔ)充和完善Web程序的安全防御性能。
(2)采用多種方式完成身份認(rèn)證,比如數(shù)字簽名、數(shù)字證書等。通信雙方通過服務(wù)證書或者數(shù)字簽名來保證連接的真實(shí)性與安全性,從而實(shí)現(xiàn)通過SSL來完成雙向認(rèn)證的目的,這樣能夠使數(shù)據(jù)在傳輸過程中的安全性和可靠性得到保證。
(3)利用計(jì)算機(jī)來有效減弱Web程序在通信方面所造成的負(fù)面影響。首先是Ajax,這是一種以交互式為基礎(chǔ)的Web開發(fā)技術(shù),在Web應(yīng)用領(lǐng)域受到了廣泛關(guān)注和好評(píng)。通過Ajax技術(shù)能夠使前端頁面與后臺(tái)之間以異步的方式實(shí)現(xiàn)數(shù)據(jù)交換,從而能夠全方面地提升用戶在使用Web應(yīng)用程序的便捷性。通常來說,借助Ajax技術(shù)開發(fā)對(duì)應(yīng)應(yīng)用程序的過程中,當(dāng)頁面發(fā)生改動(dòng)的情況下需要與用戶進(jìn)行及時(shí)通信,因此在客戶端與服務(wù)端之間會(huì)建立起專用的通信通道,以檢查所輸入的信息。在服務(wù)器需要對(duì)用戶開展對(duì)應(yīng)認(rèn)證工作時(shí),就應(yīng)當(dāng)圍繞其所運(yùn)行的服務(wù)器腳本展開。
其次是Cookie,這是一種用來使用戶身份認(rèn)證工作簡(jiǎn)單化以及提高認(rèn)證準(zhǔn)確性的數(shù)據(jù)緩存方法,它能夠幫助應(yīng)用程序所在的服務(wù)器快速有效地完成用戶身份認(rèn)證。借助該技術(shù)后,服務(wù)器能夠在用戶登錄成功后,將用戶的注冊(cè)信息記錄下來,并將其放到緩存中,當(dāng)用戶有多次重復(fù)訪問需求時(shí)就會(huì)快速將該用戶信息提取使用,以此完成和簡(jiǎn)化程序在身份認(rèn)證時(shí)的重要重復(fù)性工作。借助cookie技術(shù)進(jìn)行具體開發(fā)實(shí)踐時(shí),cookie過去經(jīng)常會(huì)遭到黑客攻擊,因此容易造成用戶相關(guān)信息的泄露,導(dǎo)致?lián)p失。其中,蠕蟲就是攻擊Web程序中所采用的cookie技術(shù)的一種主要病毒類型,其以極強(qiáng)的傳播力及破壞力能夠?qū)?yīng)用程序的大部分安全漏洞做進(jìn)一步的攻擊和破壞,從而竊取到腳本和會(huì)話信息。
第三就是JavaScript,這是一種擁有較為完善安全性能的腳本語言,能夠驅(qū)動(dòng)事件和對(duì)象。借助該技術(shù)進(jìn)行Web開發(fā),擁有簡(jiǎn)潔、生動(dòng)的優(yōu)勢(shì),該技術(shù)在語言方面也是比較簡(jiǎn)潔的,因此也受到了廣大開發(fā)者的喜愛,并將其廣泛應(yīng)用在Web程序的實(shí)際開發(fā)中[3]。
(1)保護(hù)存儲(chǔ)在本地的數(shù)據(jù)。在Java Web程序運(yùn)行過程中,倘若需要使用存儲(chǔ)在本地的數(shù)據(jù)來獨(dú)立運(yùn)行的話,通常會(huì)存在一個(gè)問題,即用戶可以直接訪問數(shù)據(jù)庫,對(duì)數(shù)據(jù)文件進(jìn)行寫入和讀取等操作,而不需要借助Java Web程序才能進(jìn)行對(duì)應(yīng)操作,這也表明用戶能夠任意讀取甚至是修改存儲(chǔ)在本地的數(shù)據(jù)。因此,應(yīng)當(dāng)采取措施保護(hù)存儲(chǔ)在本地的數(shù)據(jù)。此外,將數(shù)據(jù)存儲(chǔ)到云端等遠(yuǎn)程服務(wù)器上也容易發(fā)生類似情況。因此,可以借助Java Web程序的加密功能加密存儲(chǔ)數(shù)據(jù),在加密算法方面一般采用對(duì)稱密鑰,并且為了保障加密效果,進(jìn)一步使公鑰和私鑰結(jié)合的安全性得到加強(qiáng),可以在加密密鑰生成時(shí)加入經(jīng)使用者設(shè)計(jì)的口令。其中,口令具體包括口令重置、口令的哈希算法以及口令策略等。
(2)防止出現(xiàn)程序復(fù)制。在Java Web程序的開發(fā)過程中,很容易出現(xiàn)代碼濫用的問題,急需一種能夠防止程序被復(fù)制的授權(quán)機(jī)制。此外,還需要通過安全管理的手段來保障源碼的安全性與完整性,可以通過將程序的源碼存儲(chǔ)在安全保障良好的代碼控制倉庫,并且設(shè)計(jì)嚴(yán)格的訪問和認(rèn)證的機(jī)制,還需要關(guān)注源代碼倉庫及其相關(guān)工具所發(fā)生的安全問題。
(3)Java Web程序所面對(duì)的安全問題具有無法避免的特性,采用安全技術(shù)手段也無法將其完全清除,但是安全技術(shù)的應(yīng)用能夠保證程序可以穩(wěn)定、正常運(yùn)行。因此,在Web應(yīng)用程序引入安全保護(hù)效果更好的安全技術(shù)可以規(guī)避掉大部分的風(fēng)險(xiǎn)。開展Java Web程序的具體安全工作時(shí),要做到有的放矢,應(yīng)當(dāng)合理結(jié)合安全技術(shù)手段的發(fā)展趨勢(shì),對(duì)應(yīng)用程序的安全防護(hù)工作進(jìn)行自查和調(diào)整,這樣可以讓Java Web程序的安全工作能夠更有序、更完善。
安全技術(shù)作為保障Java Web應(yīng)用程序穩(wěn)定、正常、安全運(yùn)行的一道技術(shù)屏障,應(yīng)當(dāng)在應(yīng)用程序的開發(fā)階段就進(jìn)行更為完備的安全考量。針對(duì)Java自身所具備的安全特性,可以借助安全技術(shù)來使程序的安全性得到保障。而Java Web 程序的實(shí)現(xiàn)與開發(fā)是基于Java基礎(chǔ)知識(shí)的應(yīng)用,再通過緊密聯(lián)系Web技術(shù),可以完成Web應(yīng)用程序。在應(yīng)用程序的開發(fā)過程中,應(yīng)當(dāng)從Java技術(shù)本身出發(fā)結(jié)合Web技術(shù)中所存在的安全漏洞采取具體防護(hù)措施,從而使應(yīng)用程序在系統(tǒng)、網(wǎng)絡(luò)以及數(shù)據(jù)庫層面都能夠得到全面保障。綜上所述,在對(duì)應(yīng)用程序進(jìn)行具體分析時(shí),應(yīng)當(dāng)參考實(shí)際情況建立對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)、網(wǎng)絡(luò)通信及系統(tǒng)安全策略。