国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于J2EE的醫(yī)師協(xié)會(huì)管理系統(tǒng)安全性研究

2008-07-14 10:05金嬋鳴徐東平
電腦知識(shí)與技術(shù) 2008年18期

金嬋鳴 徐東平

摘要:介紹了Java平臺(tái)安全、J2EE安全體系結(jié)構(gòu)。以一個(gè)登錄請(qǐng)求為例,重點(diǎn)研究了J2EE架構(gòu)在醫(yī)師協(xié)會(huì)管理系統(tǒng)中的應(yīng)用,以及使用J2EE安全體系結(jié)構(gòu)構(gòu)建醫(yī)師協(xié)會(huì)管理系統(tǒng)。

關(guān)鍵詞:J2EE;安全體系結(jié)構(gòu);醫(yī)師協(xié)會(huì)管理系統(tǒng)

中圖分類(lèi)號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2008)18-2pppp-0c

Security Research on Medical Doctors Association MIS based on J2EE

JIN Chan-ming

(Wuhan University of Technology,College Of Computer Science and Technology,Wuhan 430063,China)

Abstract:In this paper,we research on Java platform security and J2EE security system architecture.Take the request of login for instance,focus on how J2EE works in a college of doctors management system,and how to use J2EE security system architecture to build it.

Key words:J2EE; security system architecture; a college of doctors management system

1 引言

隨著社會(huì)主義市場(chǎng)經(jīng)濟(jì)的發(fā)展,醫(yī)療服務(wù)的規(guī)范化管理日益受到關(guān)注,相關(guān)的人事制度改革研究也日漸興盛。為了更好的實(shí)現(xiàn)醫(yī)療服務(wù)規(guī)范化管理,嚴(yán)格規(guī)范全國(guó)各地醫(yī)師執(zhí)業(yè)資格,更好地協(xié)調(diào)醫(yī)師之間的交流合作,建立一套針對(duì)全國(guó)醫(yī)師協(xié)會(huì)的管理系統(tǒng)是勢(shì)在必行,近年來(lái)互聯(lián)網(wǎng)絡(luò)的發(fā)展和Internet技術(shù)的普及,擁有眾多優(yōu)勢(shì)的B/S結(jié)構(gòu)在Web應(yīng)用程序開(kāi)發(fā)中得到迅速的推廣。但是綜合運(yùn)用JSP、Java、互聯(lián)網(wǎng)絡(luò)和數(shù)據(jù)庫(kù)等多種技術(shù)開(kāi)發(fā)的醫(yī)師協(xié)會(huì)管理系統(tǒng),會(huì)存在不少安全性隱患。比如,由于互聯(lián)網(wǎng)絡(luò)的開(kāi)放性、通信協(xié)議的安全缺陷、處理分布性等,在網(wǎng)絡(luò)環(huán)境中存儲(chǔ)、訪問(wèn)和傳輸數(shù)據(jù)信息,很有可能被泄露或破壞,所以加強(qiáng)網(wǎng)絡(luò)安全非常迫切。

2 醫(yī)師協(xié)會(huì)管理系統(tǒng)概述

綜合分析醫(yī)師協(xié)會(huì)管理系統(tǒng)的需求說(shuō)明,得到系統(tǒng)功能模塊圖和頂層數(shù)據(jù)流圖。

圖1系統(tǒng)主要功能模塊

圖2 頂層數(shù)據(jù)流圖

系統(tǒng)用戶分為管理員用戶和普通用戶,不同的用戶類(lèi)型使用權(quán)限不同。對(duì)于用戶管理模塊,管理員有增加、修改、刪除普通用戶信息的權(quán)限,而普通用戶就只有修改用戶信息的權(quán)限。對(duì)于其他功能模塊,管理員可以進(jìn)行增加、刪除、修改操作,普通用戶只能瀏覽。

3 系統(tǒng)的安全性考慮

3.1 物理安全性

保證安裝了醫(yī)師協(xié)會(huì)管理系統(tǒng)的計(jì)算機(jī)設(shè)備的物理安全是前提。物理安全是指保護(hù)計(jì)算機(jī)設(shè)備免遭雷擊、火災(zāi)等環(huán)境事故以及因人為操作失誤導(dǎo)致的破壞過(guò)程。主要通過(guò)安裝消防、避雷系統(tǒng),設(shè)備冗余備份,嚴(yán)格管理及提高員工的整體安全意識(shí)等措施予以保障。

3.2 Java平臺(tái)的安全性

J2EE安全體系結(jié)構(gòu)建立在J2SE的基本特征之上,而J2SE又是以Java平臺(tái)為基礎(chǔ),在研究基于J2EE架構(gòu)的醫(yī)師協(xié)會(huì)管理系統(tǒng)之前,有必要了解Java平臺(tái)安全機(jī)制和J2EE的安全體系結(jié)構(gòu)。

Java語(yǔ)言是一種與操作系統(tǒng)平臺(tái)無(wú)關(guān)的語(yǔ)言,本身有著較為完善的安全機(jī)制,用Java開(kāi)發(fā)應(yīng)用程序,可以安全的在Internet上運(yùn)行。最初的Java平臺(tái)(JDK1.1)采用沙箱(sandbox)安全模型,核心主要由3個(gè)支柱承擔(dān),分別是Java運(yùn)行環(huán)境的3個(gè)重要安全組件:類(lèi)加載器、類(lèi)文件驗(yàn)證器和安全管理器[1]。

圖3 Java2安全模型

3.3 用戶身份劃分

J2EE中的安全是基于角色的,也就是說(shuō)資源訪問(wèn)權(quán)限賦予角色,通過(guò)角色把權(quán)限賦予用戶。要檢查用戶是否有訪問(wèn)權(quán)限,服務(wù)器就檢查用戶所屬的角色以及角色所具有的權(quán)限,服務(wù)器用特定的工具實(shí)現(xiàn)用戶和角色之間的映射。不同的J2EE服務(wù)器供應(yīng)商用自己特定的方法告訴服務(wù)器哪個(gè)用戶屬于哪個(gè)角色,有的使用操作系統(tǒng)的安全機(jī)制,有的把用戶和角色信息保存在數(shù)據(jù)庫(kù)或者文件系統(tǒng)中[2]。通過(guò)聲明性安全和編程性安全這兩種方式可以指出特定角色可以訪問(wèn)的特定資源。

3.3.1 聲明性的安全

聲明性的安全通過(guò)安全聲明的方式來(lái)表示應(yīng)用程序的安全需求,一般包括安全角色、訪問(wèn)控制和驗(yàn)證要求等。在J2EE平臺(tái)中的部署描述符充當(dāng)了聲明性安全的主要工具。部署描述符是組件開(kāi)發(fā)者、應(yīng)用程序部署者和應(yīng)用程序組裝者之間的交流工具。應(yīng)用程序的開(kāi)發(fā)者用它來(lái)表示應(yīng)用中的安全需求,應(yīng)用程序部署者或應(yīng)用程序組裝者將安全角色與部署環(huán)境中的用戶和組件映射起來(lái),在程序運(yùn)行時(shí)容器從部署描述符中提取出相應(yīng)的安全策略,然后容器根據(jù)安全策略執(zhí)行安全驗(yàn)證。聲明性的安全不需要開(kāi)發(fā)人員編寫(xiě)任何相關(guān)的代碼,一切都是通過(guò)配置部署描述符來(lái)完成的。

3.3.2 可編程的安全

有時(shí)候一些聲明性安全無(wú)法滿足特殊安全的要求。假定開(kāi)發(fā)人員定義了兩個(gè)角色User和Admin,要求User角色的用戶只能訪問(wèn)他自己的賬戶信息,而Admin角色的用戶能查看所有賬戶的信息。這時(shí)候利用聲明性安全就無(wú)能為力了,因?yàn)槁暶餍园踩ㄟ^(guò)部署描述符定義的安全需求是基于類(lèi),而不是基于實(shí)例的。所以這個(gè)問(wèn)題應(yīng)該利用J2EE的可編程性安全來(lái)解決。

根據(jù)實(shí)際需要,整個(gè)系統(tǒng)面向的用戶可分為3類(lèi)角色:系統(tǒng)管理員、注冊(cè)用戶和游客。每種角色的活動(dòng)分別沿一條路線前進(jìn),對(duì)于每一種角色都有相應(yīng)的機(jī)制,控制它只能在允許的活動(dòng)范圍內(nèi)行使自己的權(quán)力,這樣就為各種角色構(gòu)成了自己的活動(dòng)空間,并且各種角色的活動(dòng)空間互不干擾,使用這種方法系統(tǒng)的安全性得到了很大程度的加強(qiáng)。在具體的實(shí)現(xiàn)上,在數(shù)據(jù)庫(kù)中為每種角色都增加了一個(gè)表,如administrator表 (系統(tǒng)管理員),user表(注冊(cè)用戶),tourist表(游客用戶)。驗(yàn)證用戶身份時(shí),使用從用戶的證書(shū)中獲取的信息(用戶的證書(shū)編號(hào))來(lái)驗(yàn)證該信息是否是表中記錄的子集,如果是,則說(shuō)明該用戶是該表所表征的角色,可以進(jìn)行角色允許的操作;否則,將提示為非法用戶。為了將角色的活動(dòng)范圍控制在合法的區(qū)域內(nèi),只對(duì)用戶有權(quán)力訪問(wèn)的頁(yè)面建立鏈接,對(duì)高安全級(jí)的鏈接增加身份驗(yàn)證[3]。

3.4 系統(tǒng)登錄的安全性考慮

醫(yī)師協(xié)會(huì)管理系統(tǒng)的登錄過(guò)程如下:

(1)客戶從瀏覽器客戶端向Web服務(wù)器發(fā)出請(qǐng)求,服務(wù)器將請(qǐng)求轉(zhuǎn)發(fā)到Web容器,根據(jù)請(qǐng)求路徑URL找到ActionServlet,Web容器調(diào)用Servlet的service()方法,根據(jù)請(qǐng)求參數(shù)的不同調(diào)用doGet()或者doPost()方法。

(2)ActionServlet的doGet()或者doPost()方法調(diào)用process()方法處理請(qǐng)求和響應(yīng),生成RequestProcess對(duì)象處理配置文件struts-config.xml中的配置信息,依次調(diào)用processMapping()查找處理此次請(qǐng)求的Action信息并返回ActionMapping對(duì)象;processActionForm()創(chuàng)建此次請(qǐng)求的ActionForm對(duì)象;processActionCreate()創(chuàng)建處理此次請(qǐng)求的Action實(shí)例(LoginAction對(duì)象);processActionPerform()執(zhí)行Action實(shí)例的execute()方法。

(3)通過(guò)調(diào)用execute()方法獲取LoginForm存儲(chǔ)的用戶和密碼等數(shù)據(jù)信息,其中將ActionForm Bean、ActionMapping、request、response對(duì)象傳遞給LoginAction對(duì)象(Action實(shí)例);執(zhí)行完必要的邏輯處理比如查詢(xún)數(shù)據(jù)庫(kù)后,返回一個(gè)ActionForward對(duì)象,由該對(duì)象調(diào)用RequestProcess對(duì)象中的processForwardConfig()方法解析配置文件中跳轉(zhuǎn)參數(shù),轉(zhuǎn)發(fā)到相應(yīng)的View頁(yè)面success.jsp或者failure.jsp。

醫(yī)師協(xié)會(huì)管理系統(tǒng)的登錄方式是用表單登錄,用戶在表單輸入用戶名及口令以后,提交給服務(wù)器,由服務(wù)器來(lái)查詢(xún)數(shù)據(jù)庫(kù)實(shí)現(xiàn)對(duì)客戶端的認(rèn)證及授權(quán)。但是這并不安全,其主要的漏洞分為一下幾種:

用戶的敏感信息在不安全的信道中以明文的形式存在,有時(shí)連用戶名和密碼都沒(méi)有進(jìn)行至少的編碼,這種方式簡(jiǎn)單,但只能提供低級(jí)的安全。

沒(méi)有對(duì)服務(wù)器進(jìn)行驗(yàn)證,攻擊者冒充服務(wù)器,從而要求用戶把登錄信息發(fā)送到攻擊者的主機(jī)上,這樣用戶的口令就會(huì)被攻擊者所截獲。

用戶的輸入格式非法。在登錄時(shí),把用戶的登錄名和口令作為數(shù)據(jù)庫(kù)查詢(xún)的參數(shù),這樣用戶可以輸入特殊的以及口令來(lái)使查詢(xún)語(yǔ)句失去原來(lái)的作用。

所以要采用安全登錄的方式,安全登錄的過(guò)程如下:

服務(wù)器下載Applet類(lèi)文件到客戶端,并產(chǎn)生一個(gè)隨機(jī)數(shù)k,送予客戶端,服務(wù)器與客戶端進(jìn)行密匙交換,獲得會(huì)話密匙??蛻舳说纳矸蒡?yàn)證模塊驗(yàn)證服務(wù)器身份,客戶端的摘要算法模塊將用戶登錄口令進(jìn)行摘要計(jì)算??蛻舳思用苣K把用戶名、隨機(jī)數(shù)K+1以及計(jì)算所得到的摘要值用會(huì)話密匙加密,傳送給服務(wù)器。服務(wù)器脫密模塊用會(huì)話密匙脫密,獲得用戶名、摘要值及隨機(jī)數(shù)K+1,驗(yàn)證隨機(jī)數(shù)是否正確并把摘要值與數(shù)據(jù)庫(kù)中的摘要值進(jìn)行匹配,如果服務(wù)器匹配成功,JSP顯示成功登錄,否則顯示失敗[1][4]。

3.5 信息發(fā)布安全設(shè)計(jì)

醫(yī)師協(xié)會(huì)信息管理系統(tǒng)內(nèi)部涉及大量的業(yè)務(wù)信息發(fā)布,主要是發(fā)布一些文件、公告信息。這就需要解決哪些人有權(quán)限發(fā)布信息的問(wèn)題,既解決身份認(rèn)證和訪問(wèn)控制的安全問(wèn)題??梢圆捎秒娮诱?wù)內(nèi)網(wǎng)統(tǒng)一的身份認(rèn)證來(lái)訪問(wèn)控制平臺(tái),并使用基于PKI/CA體系的數(shù)字證書(shū)認(rèn)證方式和基于角色的集中權(quán)限管理方式實(shí)現(xiàn)。

4 結(jié)束語(yǔ)

J2EE平臺(tái)在構(gòu)架安全信息管理系統(tǒng)有著獨(dú)特的優(yōu)勢(shì),其安全體系結(jié)構(gòu)亦非常復(fù)雜。文中僅從整體上介紹了構(gòu)建J2EE的安全構(gòu)架并針對(duì)目前Web開(kāi)發(fā)的弊端,整合了Struts、Hibernate等優(yōu)秀的開(kāi)源框架,采用MVC設(shè)計(jì)模式,構(gòu)建了一個(gè)安全的醫(yī)師協(xié)會(huì)管理系統(tǒng)。

參考文獻(xiàn):

[1] 徐迎曉.Java安全性編程實(shí)例[M].北京:清華大學(xué)出版社,2003.

[2] 孫衛(wèi)琴.精通Struts:基于MVC的Java Web設(shè)計(jì)與開(kāi)發(fā)[M].北京:電子工業(yè)出版社,2004.

[3] 郝玉龍,等.J2EE編程技術(shù)[M].清華大學(xué)出版社,2005.

[4] 倪曉秋,等.J2EE案例開(kāi)發(fā)[M].中國(guó)水利水電出版社,2005.

收稿日期:2008-03-12

作者簡(jiǎn)介:金嬋鳴(1984-),女,湖北武漢人,武漢理工大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院在讀碩士,研究方向:多媒體技術(shù)、網(wǎng)絡(luò)應(yīng)用。

高安市| 江川县| 东港市| 岱山县| 读书| 紫金县| 乌拉特后旗| 襄垣县| 卫辉市| 察隅县| 无极县| 开原市| 南漳县| 和静县| 信丰县| 青岛市| 余干县| 南城县| 柘城县| 万安县| 田东县| 湘潭县| 禹州市| 姜堰市| 枣强县| 平利县| 武鸣县| 将乐县| 长治市| 乌审旗| 武定县| 上杭县| 大关县| 观塘区| 盱眙县| 连平县| 龙胜| 五河县| 绍兴市| 桐城市| 望奎县|