基于J2EE的医师协会管理系统安全性研究

2008-07-14 10:05金婵鸣徐东平
电脑知识与技术 2008年18期

金婵鸣 徐东平

摘要:介绍了Java平台安全、J2EE安全体系结构。以一个登录请求为例,重点研究了J2EE架构在医师协会管理系统中的应用,以及使用J2EE安全体系结构构建医师协会管理系统。

关键词:J2EE;安全体系结构;医师协会管理系统

中图分类号:TP311文献标识码:A文章编号: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 引言

随着社会主义市场经济的发展,医疗服务的规范化管理日益受到关注,相关的人事制度改革研究也日渐兴盛。为了更好的实现医疗服务规范化管理,严格规范全国各地医师执业资格,更好地协调医师之间的交流合作,建立一套针对全国医师协会的管理系统是势在必行,近年来互联网络的发展和Internet技术的普及,拥有众多优势的B/S结构在Web应用程序开发中得到迅速的推广。但是综合运用JSP、Java、互联网络和数据库等多种技术开发的医师协会管理系统,会存在不少安全性隐患。比如,由于互联网络的开放性、通信协议的安全缺陷、处理分布性等,在网络环境中存储、访问和传输数据信息,很有可能被泄露或破坏,所以加强网络安全非常迫切。

2 医师协会管理系统概述

综合分析医师协会管理系统的需求说明,得到系统功能模块图和顶层数据流图。

图1系统主要功能模块

图2 顶层数据流图

系统用户分为管理员用户和普通用户,不同的用户类型使用权限不同。对于用户管理模块,管理员有增加、修改、删除普通用户信息的权限,而普通用户就只有修改用户信息的权限。对于其他功能模块,管理员可以进行增加、删除、修改操作,普通用户只能浏览。

3 系统的安全性考虑

3.1 物理安全性

保证安装了医师协会管理系统的计算机设备的物理安全是前提。物理安全是指保护计算机设备免遭雷击、火灾等环境事故以及因人为操作失误导致的破坏过程。主要通过安装消防、避雷系统,设备冗余备份,严格管理及提高员工的整体安全意识等措施予以保障。

3.2 Java平台的安全性

J2EE安全体系结构建立在J2SE的基本特征之上,而J2SE又是以Java平台为基础,在研究基于J2EE架构的医师协会管理系统之前,有必要了解Java平台安全机制和J2EE的安全体系结构。

Java语言是一种与操作系统平台无关的语言,本身有着较为完善的安全机制,用Java开发应用程序,可以安全的在Internet上运行。最初的Java平台(JDK1.1)采用沙箱(sandbox)安全模型,核心主要由3个支柱承担,分别是Java运行环境的3个重要安全组件:类加载器、类文件验证器和安全管理器[1]。

图3 Java2安全模型

3.3 用户身份划分

J2EE中的安全是基于角色的,也就是说资源访问权限赋予角色,通过角色把权限赋予用户。要检查用户是否有访问权限,服务器就检查用户所属的角色以及角色所具有的权限,服务器用特定的工具实现用户和角色之间的映射。不同的J2EE服务器供应商用自己特定的方法告诉服务器哪个用户属于哪个角色,有的使用操作系统的安全机制,有的把用户和角色信息保存在数据库或者文件系统中[2]。通过声明性安全和编程性安全这两种方式可以指出特定角色可以访问的特定资源。

3.3.1 声明性的安全

声明性的安全通过安全声明的方式来表示应用程序的安全需求,一般包括安全角色、访问控制和验证要求等。在J2EE平台中的部署描述符充当了声明性安全的主要工具。部署描述符是组件开发者、应用程序部署者和应用程序组装者之间的交流工具。应用程序的开发者用它来表示应用中的安全需求,应用程序部署者或应用程序组装者将安全角色与部署环境中的用户和组件映射起来,在程序运行时容器从部署描述符中提取出相应的安全策略,然后容器根据安全策略执行安全验证。声明性的安全不需要开发人员编写任何相关的代码,一切都是通过配置部署描述符来完成的。

3.3.2 可编程的安全

有时候一些声明性安全无法满足特殊安全的要求。假定开发人员定义了两个角色User和Admin,要求User角色的用户只能访问他自己的账户信息,而Admin角色的用户能查看所有账户的信息。这时候利用声明性安全就无能为力了,因为声明性安全通过部署描述符定义的安全需求是基于类,而不是基于实例的。所以这个问题应该利用J2EE的可编程性安全来解决。

根据实际需要,整个系统面向的用户可分为3类角色:系统管理员、注册用户和游客。每种角色的活动分别沿一条路线前进,对于每一种角色都有相应的机制,控制它只能在允许的活动范围内行使自己的权力,这样就为各种角色构成了自己的活动空间,并且各种角色的活动空间互不干扰,使用这种方法系统的安全性得到了很大程度的加强。在具体的实现上,在数据库中为每种角色都增加了一个表,如administrator表 (系统管理员),user表(注册用户),tourist表(游客用户)。验证用户身份时,使用从用户的证书中获取的信息(用户的证书编号)来验证该信息是否是表中记录的子集,如果是,则说明该用户是该表所表征的角色,可以进行角色允许的操作;否则,将提示为非法用户。为了将角色的活动范围控制在合法的区域内,只对用户有权力访问的页面建立链接,对高安全级的链接增加身份验证[3]。

3.4 系统登录的安全性考虑

医师协会管理系统的登录过程如下:

(1)客户从浏览器客户端向Web服务器发出请求,服务器将请求转发到Web容器,根据请求路径URL找到ActionServlet,Web容器调用Servlet的service()方法,根据请求参数的不同调用doGet()或者doPost()方法。

(2)ActionServlet的doGet()或者doPost()方法调用process()方法处理请求和响应,生成RequestProcess对象处理配置文件struts-config.xml中的配置信息,依次调用processMapping()查找处理此次请求的Action信息并返回ActionMapping对象;processActionForm()创建此次请求的ActionForm对象;processActionCreate()创建处理此次请求的Action实例(LoginAction对象);processActionPerform()执行Action实例的execute()方法。

(3)通过调用execute()方法获取LoginForm存储的用户和密码等数据信息,其中将ActionForm Bean、ActionMapping、request、response对象传递给LoginAction对象(Action实例);执行完必要的逻辑处理比如查询数据库后,返回一个ActionForward对象,由该对象调用RequestProcess对象中的processForwardConfig()方法解析配置文件中跳转参数,转发到相应的View页面success.jsp或者failure.jsp。

医师协会管理系统的登录方式是用表单登录,用户在表单输入用户名及口令以后,提交给服务器,由服务器来查询数据库实现对客户端的认证及授权。但是这并不安全,其主要的漏洞分为一下几种:

用户的敏感信息在不安全的信道中以明文的形式存在,有时连用户名和密码都没有进行至少的编码,这种方式简单,但只能提供低级的安全。

没有对服务器进行验证,攻击者冒充服务器,从而要求用户把登录信息发送到攻击者的主机上,这样用户的口令就会被攻击者所截获。

用户的输入格式非法。在登录时,把用户的登录名和口令作为数据库查询的参数,这样用户可以输入特殊的以及口令来使查询语句失去原来的作用。

所以要采用安全登录的方式,安全登录的过程如下:

服务器下载Applet类文件到客户端,并产生一个随机数k,送予客户端,服务器与客户端进行密匙交换,获得会话密匙。客户端的身份验证模块验证服务器身份,客户端的摘要算法模块将用户登录口令进行摘要计算。客户端加密模块把用户名、随机数K+1以及计算所得到的摘要值用会话密匙加密,传送给服务器。服务器脱密模块用会话密匙脱密,获得用户名、摘要值及随机数K+1,验证随机数是否正确并把摘要值与数据库中的摘要值进行匹配,如果服务器匹配成功,JSP显示成功登录,否则显示失败[1][4]。

3.5 信息发布安全设计

医师协会信息管理系统内部涉及大量的业务信息发布,主要是发布一些文件、公告信息。这就需要解决哪些人有权限发布信息的问题,既解决身份认证和访问控制的安全问题。可以采用电子政务内网统一的身份认证来访问控制平台,并使用基于PKI/CA体系的数字证书认证方式和基于角色的集中权限管理方式实现。

4 结束语

J2EE平台在构架安全信息管理系统有着独特的优势,其安全体系结构亦非常复杂。文中仅从整体上介绍了构建J2EE的安全构架并针对目前Web开发的弊端,整合了Struts、Hibernate等优秀的开源框架,采用MVC设计模式,构建了一个安全的医师协会管理系统。

参考文献:

[1] 徐迎晓.Java安全性编程实例[M].北京:清华大学出版社,2003.

[2] 孙卫琴.精通Struts:基于MVC的Java Web设计与开发[M].北京:电子工业出版社,2004.

[3] 郝玉龙,等.J2EE编程技术[M].清华大学出版社,2005.

[4] 倪晓秋,等.J2EE案例开发[M].中国水利水电出版社,2005.

收稿日期:2008-03-12

作者简介:金婵鸣(1984-),女,湖北武汉人,武汉理工大学计算机科学与技术学院在读硕士,研究方向:多媒体技术、网络应用。