劉波平, 孫 丹*, 裘 鋒, 施煒利, 付 康
(1.江西省計(jì)算技術(shù)研究所,江西南昌 330003; 2.江西省軟件工程技術(shù)研究中心,江西南昌 330003)
?
基于J2EE的農(nóng)機(jī)社會(huì)化服務(wù)系統(tǒng)安全問(wèn)題研究
劉波平1,2, 孫 丹1,2*, 裘 鋒1,2, 施煒利1,2, 付 康1,2
(1.江西省計(jì)算技術(shù)研究所,江西南昌 330003; 2.江西省軟件工程技術(shù)研究中心,江西南昌 330003)
研究了基于J2EE的Spring框架的MVC架構(gòu)下農(nóng)機(jī)社會(huì)化服務(wù)系統(tǒng)的實(shí)現(xiàn),及在J2EE模型下,該應(yīng)用系統(tǒng)存在的各種安全問(wèn)題,如身份認(rèn)證、訪問(wèn)控制、數(shù)據(jù)傳輸安全及J2EE部分組件安全問(wèn)題等。針對(duì)這些安全問(wèn)題,結(jié)合J2EE安全機(jī)制,提出了SSL安全代理服務(wù)器、基于EJB方法的訪問(wèn)控制、使用單點(diǎn)登錄方法等相應(yīng)的解決措施。
J2EE;SSL安全代理服務(wù)器;EJB方法;單點(diǎn)登錄方法
目前農(nóng)機(jī)各服務(wù)實(shí)體經(jīng)營(yíng)粗放,缺乏數(shù)據(jù)共享交換,造成農(nóng)機(jī)作業(yè)盲目流動(dòng),出現(xiàn)生產(chǎn)效率低下、資源浪費(fèi)嚴(yán)重等問(wèn)題,急需建立一個(gè)綜合信息服務(wù)系統(tǒng),匯集農(nóng)機(jī)管理部門(mén)、農(nóng)機(jī)生產(chǎn)企業(yè)、農(nóng)機(jī)手等農(nóng)機(jī)生產(chǎn)、經(jīng)營(yíng)相關(guān)信息于一體,實(shí)現(xiàn)農(nóng)機(jī)信息查詢、購(gòu)置補(bǔ)貼申報(bào)、在線報(bào)修、二手在線交易等各類(lèi)農(nóng)機(jī)社會(huì)化服務(wù)。筆者研究了基于J2EE結(jié)構(gòu)框架下的農(nóng)機(jī)社會(huì)化服務(wù)系統(tǒng)的實(shí)現(xiàn),及在J2EE模型下,該應(yīng)用系統(tǒng)存在的各種安全問(wèn)題,并提出了相應(yīng)的解決措施。
1.1農(nóng)機(jī)社會(huì)化服務(wù)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)針對(duì)基于B/S結(jié)構(gòu)的綜合信息服務(wù)系統(tǒng),該研究設(shè)計(jì)的農(nóng)機(jī)社會(huì)化服務(wù)系統(tǒng)采用基于J2EE的Spring框架的MVC架構(gòu)實(shí)現(xiàn)[1]。
MVC架構(gòu)是“Model-View-Controller”的縮寫(xiě),MVC由“模型-視圖-控制器”3部分構(gòu)成。視圖(View)代表用戶交互界面,對(duì)于農(nóng)機(jī)社會(huì)化服務(wù)Web應(yīng)用系統(tǒng),這里對(duì)應(yīng)的是HTML頁(yè)面。模型(Model)用于業(yè)務(wù)流程的處理,模型接收視圖請(qǐng)求的數(shù)據(jù),并返回最終的處理結(jié)果,農(nóng)機(jī)社會(huì)化服務(wù)系統(tǒng)采用目前最流行的EJB模型??刂?Controller)用于接收用戶的請(qǐng)求,并將模型和視圖匹配在一起,共同完成用戶的請(qǐng)求。農(nóng)機(jī)社會(huì)化服務(wù)系統(tǒng)采用Servlets作為控制器,用于接收用戶HTTP請(qǐng)求, 并且負(fù)責(zé)請(qǐng)求的數(shù)據(jù)傳送給模型,然后通過(guò)JSP腳本解析模型處理的結(jié)果,最終通過(guò)html頁(yè)面展示給用戶,其模式圖見(jiàn)圖 1 所示。
圖1 MVC架構(gòu)模式 Fig.1 MVC infrastructure Mode
1.2農(nóng)機(jī)社會(huì)化服務(wù)系統(tǒng)的構(gòu)成該系統(tǒng)服務(wù)器端選用Apache+Tomcat作為J2EE中間件平臺(tái),選用MySQL作為數(shù)據(jù)庫(kù)服務(wù)器??蛻舳耸褂煤?jiǎn)單的常用瀏覽器訪問(wèn)即可。在多層結(jié)構(gòu)的應(yīng)用中,Apache+Tomcat可以提供開(kāi)發(fā)和利用服務(wù)器端業(yè)務(wù)邏輯的基本框架,支持分布式編程模型,提供一定程度的透明性。以下使用相關(guān)的例子都是以Apache+Tomcat+MySQL為例來(lái)說(shuō)明的,其設(shè)計(jì)結(jié)構(gòu)見(jiàn)圖2。
圖2 基于J2EE的農(nóng)機(jī)社會(huì)化服務(wù)系統(tǒng)設(shè)計(jì)結(jié)構(gòu) Fig.2 Design structure of agricultural machinery socialization service system based on J2EE
2.1系統(tǒng)中身份認(rèn)證安全問(wèn)題用戶在提出訪問(wèn)請(qǐng)求時(shí),如果該用戶是非法用戶而沒(méi)有對(duì)其進(jìn)行任何限制,對(duì)于整個(gè)應(yīng)用系統(tǒng)的危害非常巨大,因此需要對(duì)用戶身份進(jìn)行驗(yàn)證。身份認(rèn)證是一種識(shí)別用戶是否具有訪問(wèn)特定資源的權(quán)限的身份鑒別技術(shù)[2]。該技術(shù)保障了合法用戶訪問(wèn)和獲取信息的權(quán)限,同時(shí)又阻止了非法訪問(wèn)者的訪問(wèn)請(qǐng)求,是應(yīng)用系統(tǒng)安全性的關(guān)鍵入口。目前常見(jiàn)的身份認(rèn)證技術(shù)主要分以下3種:基于密碼的認(rèn)證、基于數(shù)字證書(shū)加密認(rèn)證、基于指紋特征認(rèn)證[3]。
2.2系統(tǒng)中訪問(wèn)控制安全問(wèn)題身份驗(yàn)證是系統(tǒng)設(shè)置的第一道安全關(guān)卡,如果用戶已經(jīng)通過(guò)身份驗(yàn)證,且是合法用戶,一旦其不小心進(jìn)行了其他的錯(cuò)誤操作,導(dǎo)致應(yīng)用系統(tǒng)敏感數(shù)據(jù)丟失或者受破壞,同樣對(duì)應(yīng)用系統(tǒng)危害也是巨大的[4]。因此需對(duì)合法用戶進(jìn)行訪問(wèn)控制,限制用戶訪問(wèn)資源的最小權(quán)限。訪問(wèn)控制指通過(guò)一些安全策略的方式,限制用戶對(duì)重要資源的訪問(wèn)范圍,主要為了防止非法用戶盜取受保護(hù)的重要數(shù)據(jù)或者防止合法用戶對(duì)受保護(hù)的資源進(jìn)行非授權(quán)訪問(wèn)[5]。
2.3系統(tǒng)中數(shù)據(jù)傳輸安全問(wèn)題很多時(shí)候,Web應(yīng)用系統(tǒng)都是基于HTTP協(xié)議進(jìn)行通信的,該協(xié)議是明文傳輸?shù)?,?shù)據(jù)很容易受到破壞。數(shù)據(jù)完整性指存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)的精確性和可靠性,它是衡量數(shù)據(jù)質(zhì)量的一種標(biāo)準(zhǔn);數(shù)據(jù)保密性是指數(shù)據(jù)在傳輸過(guò)程中不泄露給非授權(quán)訪問(wèn)的用戶、實(shí)體,或被非法利用[6]。因此,數(shù)據(jù)傳輸時(shí),其保密性和完整性是整個(gè)應(yīng)用系統(tǒng)信息傳輸過(guò)程中的前提和保障,必須保障數(shù)據(jù)在傳輸中不被監(jiān)聽(tīng)、篡改和偽造,以保證數(shù)據(jù)的準(zhǔn)確性。
2.4系統(tǒng)J2EE中JSP組件安全問(wèn)題
2.4.1JSP源代碼任意下載問(wèn)題。JSP源代碼任意下載問(wèn)題主要指客戶端訪問(wèn)JSP代碼時(shí),服務(wù)端自動(dòng)將JSP源代碼返回給客戶端用戶瀏覽器上。通常JSP代碼只是在服務(wù)器端執(zhí)行,執(zhí)行后將解析的結(jié)果通過(guò)HTML代碼的形式返回到用戶瀏覽器客戶端[7]。但在實(shí)際訪問(wèn)請(qǐng)求過(guò)程中,可能由于如Apache、Tomcat等服務(wù)器內(nèi)部配置不當(dāng)或者配置錯(cuò)誤導(dǎo)致未能返回錯(cuò)誤定制頁(yè)面,會(huì)引起JSP等服務(wù)端應(yīng)用程序源代碼直接返回給用戶瀏覽器,如在程序文件名后加些特殊的字符就有可能獲得JSP代碼[8]。例如在Tomcat3.1版本下,瀏覽器訪問(wèn)http://localhost:80/index.jsp,服務(wù)器可以正常執(zhí)行,但如果訪問(wèn)http://localhost:80/index.JSP,則瀏覽器會(huì)提示是否要下載該文件,下載的文件就包含整個(gè)文件的源代碼。由于JSP對(duì)大小寫(xiě)敏感,而Tomcat只會(huì)將小寫(xiě)的JSP后綴文件名當(dāng)作正常的JSP文件來(lái)執(zhí)行,如果換成大寫(xiě)的話,Tomcat未能識(shí)別正常的文件名傳給JSP進(jìn)行解析,導(dǎo)致直接將該文件當(dāng)成下載的文件直接返回給用戶下載,這樣直接引起JSP文件源代碼任意下載,導(dǎo)致敏感信息泄露。
2.4.2遠(yuǎn)程執(zhí)行任意命令問(wèn)題。如果用戶請(qǐng)求的URL鏈接中含有“/servlet/”字符,則JSP解析執(zhí)行功能被打開(kāi),這時(shí)只要在URL鏈接后面添加“../”需要訪問(wèn)的目標(biāo)文件,則有可能訪問(wèn)到服務(wù)器其他目錄的文件,特別是系統(tǒng)一些敏感文件,這就嚴(yán)重威脅到目標(biāo)主機(jī)系統(tǒng)的安全。
3.1使用單點(diǎn)登錄方法進(jìn)行身份驗(yàn)證用戶身份鑒別是農(nóng)機(jī)社會(huì)化系統(tǒng)中最開(kāi)始的一道安全防線,當(dāng)用戶訪問(wèn)農(nóng)機(jī)社會(huì)化服務(wù)系統(tǒng)時(shí),首先需要登錄系統(tǒng)驗(yàn)證自己的身份,然后才能進(jìn)入系統(tǒng)進(jìn)行下一步的訪問(wèn)和操作。在農(nóng)機(jī)社會(huì)化系統(tǒng)中包括不同的子系統(tǒng),這些應(yīng)用系統(tǒng)都需要用戶輸入賬號(hào)密碼進(jìn)行身份驗(yàn)證成功后才能訪問(wèn)。這樣不僅使用戶必須為每個(gè)農(nóng)機(jī)社會(huì)化子系統(tǒng)設(shè)置登錄憑證,而且增加管理員對(duì)各個(gè)系統(tǒng)用戶信息庫(kù)的庫(kù)的維護(hù)[9]。不但增加了工作量,而且還存在一定的安全風(fēng)險(xiǎn)。因此,在農(nóng)機(jī)社會(huì)化系統(tǒng)中采用單點(diǎn)登錄方法[10]進(jìn)行多個(gè)子系統(tǒng)的一次性身份驗(yàn)證。
3.2基于EJB方法的訪問(wèn)控制農(nóng)機(jī)化社會(huì)平臺(tái)采用的是基于J2EE的Web應(yīng)用架構(gòu)開(kāi)發(fā)的,EJB是J2EE框架中的服務(wù)器端組件模型。EJB是一個(gè)被管理的組件,存在于J2EE容器中,并且為用戶分配不同的角色,服務(wù)器根據(jù)用戶的不同角色分配不同的訪問(wèn)控制資源[11]。在農(nóng)機(jī)社會(huì)化平臺(tái)中,我們定義了4個(gè)角色[12]:company、agriculture、database、admin。在農(nóng)機(jī)社會(huì)化平臺(tái)中安全角色的定義描述如下:
此角色包括允許查看農(nóng)機(jī)信息,申報(bào)農(nóng)業(yè)產(chǎn)品等農(nóng)產(chǎn)品銷(xiāo)售商
………
上述代碼描述了農(nóng)機(jī)社會(huì)化平臺(tái)中定義的4種安全角色,且每一種角色都定義其可以訪問(wèn)bean及其方法[13]。多種方法的訪問(wèn)權(quán)限設(shè)定是通過(guò)method-permission元素來(lái)確定的,每個(gè)method-permission元素包括一個(gè)或多個(gè)role-name元素,以及一個(gè)或多個(gè)EJB及其對(duì)應(yīng)的每種方法,只有采用正確的語(yǔ)法格式調(diào)用的方法才能實(shí)現(xiàn)訪問(wèn)控制策略。
3.3采用SSL安全代理方式實(shí)現(xiàn)加密傳輸在農(nóng)機(jī)社會(huì)化平臺(tái)的Web應(yīng)用系統(tǒng)訪問(wèn)中,用戶和服務(wù)器之間數(shù)據(jù)傳輸過(guò)程中,數(shù)據(jù)安全需得到最大的安全保護(hù),從而實(shí)現(xiàn)數(shù)據(jù)保密性及完整性的安全需求。采用SSL安全代理服務(wù)器能夠保證數(shù)據(jù)的安全性。
SSL安全代理服務(wù)器包括3個(gè)部分:客戶端代理、服務(wù)器代理、訪問(wèn)控制[13]。SSL安全代理服務(wù)器是瀏覽器和Web服務(wù)器之間的安全管理者,促使瀏覽器和Web服務(wù)器之間建立安全可靠的數(shù)據(jù)傳輸。SSL安全代理服務(wù)器工作原理:當(dāng)用戶需與遠(yuǎn)程Web服務(wù)器建立連接時(shí),首先向SSL安全代理服務(wù)器發(fā)送HTTP請(qǐng)求,由SSL安全代理服務(wù)器與遠(yuǎn)程Web服務(wù)器建立連接;建立連接后,瀏覽器與服務(wù)器之間傳輸?shù)臄?shù)據(jù)都是通過(guò)SSL安全代理服務(wù)器采用1 024位非對(duì)稱算法RSA[14]進(jìn)行高強(qiáng)度加密轉(zhuǎn)發(fā)完成的,這樣可以保證通信數(shù)據(jù)的完整性及保密性,其SSL安全代理服務(wù)器工作原理如圖3所示。
圖3 SSL安全代理傳輸過(guò)程Fig.3 The SSL secure proxy transmission process
該研究采用J2EE體系結(jié)構(gòu)對(duì)農(nóng)機(jī)社會(huì)化平臺(tái)進(jìn)行開(kāi)發(fā),使系統(tǒng)能夠支持分布式事務(wù)處理,且可使系統(tǒng)能夠達(dá)到良好的可伸縮性、擴(kuò)展性和重用性,是企業(yè)的首選構(gòu)造平臺(tái)。首先介紹了農(nóng)機(jī)社會(huì)化平臺(tái)的結(jié)構(gòu)模型,探討了在J2EE架構(gòu)下該系統(tǒng)開(kāi)發(fā)中存在的一系列安全問(wèn)題,如身份認(rèn)證、訪問(wèn)控制、數(shù)據(jù)傳輸安全、J2EE組件等安全問(wèn)題,并針對(duì)這些問(wèn)題采取了相應(yīng)的措施來(lái)確保系統(tǒng)的安全性。
[1] 尹漢東,任邵東,周生炳.基于J2EE的Web應(yīng)用的MVC架構(gòu)實(shí)現(xiàn)[J].計(jì)算機(jī)仿真,2004,21(11):133-136.
[2] 劉如太.基于J2EE平臺(tái)的益智類(lèi)游戲開(kāi)發(fā)中安全問(wèn)題的研究[D].北京:華北電力大學(xué),2007.
[3] 陳斌.基于J2EE平臺(tái)的Web系統(tǒng)安全研究與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2014.
[4] 張?jiān)品?基于J2EE架構(gòu)的電子政務(wù)系統(tǒng)的安全問(wèn)題研究[D].天津:天津工業(yè)大學(xué),2008.
[5] 梁娜.基于J2EE的Web安全技術(shù)應(yīng)用研究[D].青島:山東科技大學(xué),2003.
[6] 裴德志.基于J2EE的Web安全研究[D].武漢:武漢理工大學(xué),2006.
[7] 張志立,張鵬,齊德昱.基于J2EE的Web應(yīng)用開(kāi)發(fā)中安全問(wèn)題的研究[J].武漢理工大學(xué)學(xué)報(bào) (交通科學(xué)與工程版),2005,29(2):300-303.
[8] 洪丹丹.基于J2EE輕量級(jí)框架的安全Web架構(gòu)研究與應(yīng)用[D].成都:電子科技大學(xué),2009.
[9] 劉玉,葛忠寶,趙越.基于Web方式單點(diǎn)登錄的幾種實(shí)現(xiàn)方式[C]//2006年電力信息化高級(jí)論壇論文集.揚(yáng)州:中國(guó)電機(jī)工程學(xué)會(huì),國(guó)電信息中心,2006.
[10] 王穎.單點(diǎn)登錄技術(shù)在J2EE企業(yè)Web中的研究與應(yīng)用[J].長(zhǎng)春大學(xué)學(xué)報(bào),2010,20(8):70-73.
[11] 陳景霞,李萌.基于J2EE的Web信息系統(tǒng)開(kāi)發(fā)方法的定義[J].制造業(yè)自動(dòng)化,2012,8(16):31-33.
[12] 武蕾娜,殷兆麟,張麗麗.基于AOP的EJB訪問(wèn)控制功能的實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2007,24(9):63-65.
[13] 曲波,吳兆芝.面向安全Web服務(wù)的SSL代理服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)[J].華中科技大學(xué)學(xué)報(bào)(自然科學(xué)版),2003,31(S1):114-116.
[14] 饒興.基于SSL協(xié)議的安全代理設(shè)計(jì)[D].武漢:武漢理工大學(xué),2011.
SecurityProblemsResearchonSocializedServiceofAgriculturalMachineryBasedonJ2EE
LIUBo-ping1,2,SUNDan1,2*,QIUFeng1,2etal(1.JiangxiInstituteofComputingTechnology,Nanchang,Jiangxi330003; 2.SoftwareEngineeringandTechnicalResearchCenterofJiangxiProvince,Nanchang,Jiangxi330003)
TherealizationofsocializedserviceofagriculturalmachineryundertheJ2EEframeworkwasresearched,aswellasthesecurityproblemsinapplicationsystemunderJ2EEmodel,includingidentityauthentication,accesscontrol,datatransmissionsecurityandJ2EEcomponentssecurity.Basedonthesesecurityproblems,thecorrespondingsolutiontotheSSLsecureproxyserverundertheEJBaccesscontrolandsinglesign-onoptionwasputforwardbycombiningwiththeJ2EEsecuremechanism.
J2EE;SSLsecureproxyserver;EJBmethod;Singlesign-onoption
國(guó)家科技支撐計(jì)劃項(xiàng)目(2014BAD10B00,2014BAD10B05)。
劉波平(1963- ),男,江西吉安人,教授級(jí)高級(jí)工程師,博士,從事農(nóng)業(yè)信息化、圖像處理研究。*通訊作者,助理工程師,碩士,從事信息系統(tǒng)安全研究。
2016-05-31
S126
A
0517-6611(2016)22-233-03