李寧
摘要:為解決當(dāng)前我?,F(xiàn)有的高校評(píng)優(yōu)評(píng)先B/S系統(tǒng)中存在的界面不夠美觀、操作不夠便捷、缺少移動(dòng)客戶端、加載緩慢和部分安全漏洞等問(wèn)題,提出了采用ExtJS4作為系統(tǒng)前端界面技術(shù),整合SSH2框架技術(shù),以SQL Server 2008作為后臺(tái)數(shù)據(jù)庫(kù),同時(shí)加入對(duì)系統(tǒng)架構(gòu)安全性研究,設(shè)計(jì)和構(gòu)建了安全的多層Web應(yīng)用框架,并基于此架構(gòu)進(jìn)行應(yīng)用,實(shí)現(xiàn)了基于Windows和Android雙平臺(tái)的高校e評(píng)優(yōu)系統(tǒng)。該系統(tǒng)在實(shí)際應(yīng)用中較好地解決了現(xiàn)有系統(tǒng)的不足,對(duì)高校其他B/S系統(tǒng)具有一定借鑒價(jià)值。
關(guān)鍵詞:ExtJS;SSH2;安全多層web框架;高校評(píng)優(yōu)系統(tǒng)
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)27-0064-02
1 問(wèn)題背景
1.1 高校評(píng)優(yōu)系統(tǒng)現(xiàn)狀
當(dāng)前,高校師生在開(kāi)展諸如優(yōu)秀黨員、優(yōu)秀教師和五四評(píng)優(yōu)等活動(dòng)時(shí),往往采用現(xiàn)場(chǎng)投票、人工計(jì)票方式,極大地影響著工作的效率;而部分高校雖然采用了網(wǎng)上在線投票系統(tǒng),但系統(tǒng)存在不少問(wèn)題,如有些系統(tǒng)僅僅限于網(wǎng)上投票而無(wú)法提供參加評(píng)優(yōu)人員對(duì)個(gè)人評(píng)優(yōu)信息的維護(hù);有些系統(tǒng)缺乏方便快捷的客戶端操作界面,無(wú)移動(dòng)手機(jī)端界面;有些系統(tǒng)存在不少安全問(wèn)題,如用戶密碼未加密、管理員能夠查看到誰(shuí)給誰(shuí)投票以及系統(tǒng)開(kāi)發(fā)框架存在不少技術(shù)漏洞等。為此,設(shè)計(jì)開(kāi)發(fā)基于安全多層Web應(yīng)用框架的并具安卓端的評(píng)優(yōu)系統(tǒng)便成為一個(gè)迫切的任務(wù)。
1.2 安全多層Web應(yīng)用框架研究
在多層Java Web系統(tǒng)架構(gòu)研究和應(yīng)用中,目前較為流行的Struts2+Spring+Hibernate(即SSH2)架構(gòu)提供了易維護(hù)的、低耦合的開(kāi)發(fā)框架模型,可用來(lái)搭建高質(zhì)量的Web應(yīng)用。李淑芳等[1]的“基于SSH2框架的高??蒲芯W(wǎng)絡(luò)管理系統(tǒng)的實(shí)現(xiàn)”、孟凡奇等[2]的“SSH架構(gòu)在導(dǎo)師實(shí)驗(yàn)室綜合管理系統(tǒng)開(kāi)發(fā)中的應(yīng)用”在辦公自動(dòng)化、計(jì)算機(jī)輔助決策和現(xiàn)代化信息發(fā)布方面大大提高了工作效率。
在前端界面技術(shù)方面,ExtJS是一個(gè)基于Ajax的框架,可用來(lái)開(kāi)發(fā)界面美觀的富客戶端應(yīng)用,使得B/S應(yīng)用更加具有生命力和活力,提高用戶體驗(yàn)。比如,盧冶等[3]在污水管理信息平臺(tái)中引入ExtJS技術(shù),良好的組件化設(shè)計(jì)提高了系統(tǒng)Web界面品質(zhì)和開(kāi)發(fā)效率;李天鳴等[4]利用強(qiáng)大而美觀的ExtJS樹(shù)形組件進(jìn)行了Web應(yīng)用系統(tǒng)的權(quán)限管理研究,實(shí)現(xiàn)了多級(jí)的動(dòng)態(tài)權(quán)限管理。
在SSH2和ExtJS技術(shù)的整合方面,張建軍等[5]的“基于 ExtJS的J2EE輕量級(jí)框架的研究與應(yīng)用”和張鵬偉等[6]的“基于ExtJS和SSH 的Web應(yīng)用架構(gòu)的研究與實(shí)現(xiàn)”等,設(shè)計(jì)了基于ExtJS和SSH的整合架構(gòu),用以構(gòu)建靈活、易維護(hù)且可擴(kuò)展的多層Web應(yīng)用平臺(tái),使用ExtJS技術(shù)極大地提升了Web應(yīng)用程序的響應(yīng)速度和用戶體驗(yàn),使服務(wù)器更加方便、快捷地和客戶端進(jìn)行交互。
基于MVC模式的、SSH2和ExtJS技術(shù)的Web應(yīng)用架構(gòu),能構(gòu)建出易于擴(kuò)展、便于維護(hù)的、架構(gòu)優(yōu)良的且前端界面技術(shù)更強(qiáng)大的Web應(yīng)用系統(tǒng),開(kāi)發(fā)效率大大提高,項(xiàng)目的成本、周期和風(fēng)險(xiǎn)也得到極大降低,具有廣闊的市場(chǎng)應(yīng)用前景。但目前的研究問(wèn)題集中在:1)使用SSH框架的居多而不是使用更好的SSH2框架,且ExtJS采用的版本相對(duì)較低;2)架構(gòu)和系統(tǒng)的安全性考慮較少;3)缺乏在基于移動(dòng)Android平臺(tái)下的基于SSH2和ExtJS技術(shù)的整合架構(gòu)搭建及其應(yīng)用研究。
綜上,本課題依托移動(dòng)高校在線評(píng)優(yōu)系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)為背景,研究在移動(dòng)終端環(huán)境下整合SSH2和ExtJS技術(shù),加入對(duì)架構(gòu)和系統(tǒng)安全性的考慮,以SQL Server 2008作為數(shù)據(jù)后臺(tái),構(gòu)建移動(dòng)環(huán)境下的安全多層Java Web應(yīng)用架構(gòu),并設(shè)計(jì)和實(shí)現(xiàn)雙系統(tǒng)可用的高校e評(píng)優(yōu)系統(tǒng),實(shí)現(xiàn)在PC端和App端開(kāi)展高校評(píng)優(yōu)活動(dòng)的業(yè)務(wù)流程,具有較好的實(shí)踐和指導(dǎo)意義。
2 系統(tǒng)需求和模塊設(shè)計(jì)
2.1 系統(tǒng)需求分析
通過(guò)業(yè)務(wù)調(diào)研得到,系統(tǒng)通過(guò)Windows平臺(tái)完成評(píng)優(yōu)活動(dòng)的發(fā)布和管理、評(píng)優(yōu)對(duì)象的簡(jiǎn)歷維護(hù)和評(píng)優(yōu)活動(dòng)權(quán)限管理;Android端完成在線評(píng)優(yōu)流程和查看結(jié)果。系統(tǒng)主要包括管理員、參評(píng)對(duì)象和普通用戶等三類(lèi)用戶。其中,管理員主要負(fù)責(zé)評(píng)優(yōu)活動(dòng)的管理,參評(píng)對(duì)象就某個(gè)參評(píng)活動(dòng)提交個(gè)人簡(jiǎn)歷并維護(hù)個(gè)人簡(jiǎn)歷,普通用戶進(jìn)行在線評(píng)優(yōu)投票。所有用戶可以查看投票結(jié)果,同時(shí)系統(tǒng)實(shí)時(shí)統(tǒng)計(jì)評(píng)優(yōu)結(jié)果和評(píng)優(yōu)參與度,系統(tǒng)的主要數(shù)據(jù)流圖如圖1所示。
2.2 系統(tǒng)功能模塊
通過(guò)對(duì)系統(tǒng)功能需求的分析,根據(jù)用戶類(lèi)別劃分了子系統(tǒng),高校e評(píng)優(yōu)系統(tǒng)分為用戶分系統(tǒng)與管理員分系統(tǒng),基于圖1所示的數(shù)據(jù)流圖進(jìn)行了變換型處理和分析,高校e評(píng)優(yōu)系統(tǒng)Windows平臺(tái)的功能模塊結(jié)構(gòu)如圖2所示,Android平臺(tái)的系統(tǒng)功能模塊結(jié)構(gòu)如圖3所示。
3 安全多層Web應(yīng)用框架的構(gòu)建
3.1 高校e評(píng)選系統(tǒng)web框架模型與搭建
該文在參考借鑒基礎(chǔ)上設(shè)計(jì)了Java Web的一種多層應(yīng)用框架模型如圖4所示,并加入安全考慮,后臺(tái)數(shù)據(jù)庫(kù)用SQL Server 2008實(shí)現(xiàn);前端采用JSP技術(shù)開(kāi)發(fā),引入ExtJS4.2.1的類(lèi)庫(kù)來(lái)實(shí)現(xiàn)各種美觀客戶端組件,使用Ext.Data控件傳輸Json格式的數(shù)據(jù),并將數(shù)據(jù)顯示在前臺(tái)Ext.Grid控件中;安卓端采用RxJava和Retrofit技術(shù)[7]實(shí)現(xiàn)。該多層架構(gòu)極大地方便了高校e評(píng)選系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)。
系統(tǒng)搭建方面,系統(tǒng)在Win10下使用MyEclipse 2016作為IDE,整合SSH2后進(jìn)行測(cè)試,確保SSH2框架沒(méi)問(wèn)題,再導(dǎo)入ExtJS環(huán)境。鑒于Spring管理著Struts和Hibernate更好地工作,搭建順序從Spring環(huán)境開(kāi)始為最佳,主要步驟包括:開(kāi)發(fā)環(huán)境準(zhǔn)備、創(chuàng)建系統(tǒng)數(shù)據(jù)庫(kù)、新建Web工程、添加Spring、添加Hibernate、整合Spring和Hibernate、搭建Struts2環(huán)境、整合Spring與Struts2以及在項(xiàng)目中使用ExtJS。其中,在項(xiàng)目中使用ExtJS,包括的文件有:1)整個(gè)resources文件夾,ExtJS所需要的CSS與圖片文件;2)2 ext-all.js(ExtJS核心庫(kù));3)ext-lang-zh_CN.js文件(多國(guó)語(yǔ)言資源文件)。
系統(tǒng)引入ExtJS框架強(qiáng)化客戶端界面渲染功能,如登錄、文件上傳和樹(shù)形菜單等功能;采用Spring的靜態(tài)加載緩存技術(shù),在首頁(yè)將JavaScript文件、CSS文件和圖片等靜態(tài)資源文件加載進(jìn)來(lái)放進(jìn)內(nèi)存,提高ExtJS的加載速度。
3.2 系統(tǒng)的安全設(shè)計(jì)考慮
高校e評(píng)優(yōu)系統(tǒng)網(wǎng)站在使用過(guò)程也逐漸發(fā)現(xiàn)了JSP頁(yè)面SQL注入、Struts2存在漏洞、缺乏權(quán)限管理和敏感用戶數(shù)據(jù)未加密等安全風(fēng)險(xiǎn)問(wèn)題。為此做了以下安全措施。
1) 針對(duì)Struts2存在服務(wù)器被遠(yuǎn)程控制從而引起數(shù)據(jù)泄漏問(wèn)題和遠(yuǎn)程代碼執(zhí)行的漏洞 [8],基于使用的JDK1.6版本,e評(píng)優(yōu)系統(tǒng)將Struts升級(jí)到Apache Struts 2.3.34版本;
2) 對(duì)于SQL注入攻擊,e評(píng)優(yōu)系統(tǒng)定義了一個(gè)過(guò)濾SQL語(yǔ)句關(guān)鍵詞的過(guò)濾器Filter類(lèi),檢測(cè) request請(qǐng)求的SQL語(yǔ)句某些關(guān)鍵詞并處理;同時(shí),SQL語(yǔ)句采用PreparedStatement的填充參數(shù)方式,嚴(yán)禁使用字符串拼接SQL或者HQL語(yǔ)句;
3) 對(duì)系統(tǒng)中存在的敏感數(shù)據(jù),如用戶密碼、用戶的無(wú)記名投票數(shù)據(jù)等,設(shè)計(jì)了一個(gè)MD5類(lèi)對(duì)數(shù)據(jù)采用MD5算法加解密,實(shí)現(xiàn)機(jī)密重要數(shù)據(jù)的加解密出入庫(kù);
4) 雙端數(shù)據(jù)校驗(yàn)。程序在客戶端和服務(wù)端都做數(shù)據(jù)校驗(yàn),進(jìn)一步防止不合法數(shù)據(jù)進(jìn)入。
4 結(jié)束語(yǔ)
該文給出基于SSH2+ExtJS整合框架構(gòu)建的一種安全多層Java Web應(yīng)用系統(tǒng)開(kāi)發(fā)框架模型,并進(jìn)行安全的設(shè)計(jì),并在我校評(píng)優(yōu)評(píng)先工作進(jìn)行實(shí)踐應(yīng)用,設(shè)計(jì)和實(shí)現(xiàn)了具有Windows和Android雙平臺(tái)的高校在線評(píng)優(yōu)業(yè)務(wù)平臺(tái),優(yōu)化了我校評(píng)優(yōu)評(píng)先系統(tǒng),提高了工作效率,對(duì)今后我校其他B/S應(yīng)用系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)提供了一定參考借鑒價(jià)值。下一步將研究:1)前端大量數(shù)據(jù)的訪問(wèn)測(cè)試,優(yōu)化ExtJS富客戶端在大量數(shù)據(jù)訪問(wèn)應(yīng)用中的性能;2)對(duì)整合框架的安全性進(jìn)行深度測(cè)試,進(jìn)行分層逐級(jí)的安全策略技術(shù)應(yīng)用研究,取得系統(tǒng)在性能和安全的平衡。
參考文獻(xiàn):
[1] 李淑芳, 胡克寒, 張鳳麗. 基于SSH2框架的高??蒲芯W(wǎng)絡(luò)管理系統(tǒng)的實(shí)現(xiàn)[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2007, 2(7).
[2] 李淑芳, 胡克寒, 張鳳麗. 基于SSH2框架的高??蒲芯W(wǎng)絡(luò)管理系統(tǒng)的實(shí)現(xiàn)[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2007, 2(7).
[3] 盧冶, 徐明, 蘇勇. 一個(gè)基于Ext-JS技術(shù)的污水管理信息平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2013, 9(9).
[4] 李天鳴, 何月順. 基于ExtJS技術(shù)與SSH框架的權(quán)限管理研究[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2011, 5(2).
[5] 張建軍, 劉虎. 基于ExtJS的J2EE輕量級(jí)框架的研究與應(yīng)用[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2014, 31(4):73-76.
[6] 張鵬偉, 陳景霞, 張文平, 等. 基于ExtJS和SSH的Web應(yīng)用架構(gòu)的研究與實(shí)現(xiàn)[J]. 陜西科技大學(xué)學(xué)報(bào), 2010, 28(6):111-115.
[7] 郁書(shū)好, 田志會(huì), 朱成棋, 等. 基于Android的畢業(yè)設(shè)計(jì)選題系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 軟件導(dǎo)刊, 2018(4).
[8] The Apache Software Foundation. Apache Struts 2 Security Bulletins[EB/OL].https://cwiki.apache.org/confluence/display/WW/Security+Bulletins.
[通聯(lián)編輯:謝媛媛]