敏捷SDL开发模式下的轻量级保险管理系统构建
2021-01-30徐会军周正日
徐会军 周正日
(福建警察学院 福建省福州市 350007)
1 引言
近年来,中国经济和人均GDP 不断提升,快速发展的市场经济推动了我国保险业蓬勃发展。据统计,2017年我国成为全球第二大保险市场[1],保费收入超 5000 多亿美元。2020年瑞士瑞再研究院发布Sigma 报告《世界保险业:渡过2020年疫情大风暴》预计2021年中国保费将超5 万亿美元,引领全球保险市场。蓬勃发展背后,保险业务面临着保险大数据的管理和分析挑战,需要使用较为先进的技术建立保险管理系统,提供更好的服务质量和进行更快的数据管理。康文波[2]、杜丽苹[3]基于Web 的保险业务管理信息系统,一定程度提高了系统的运行效率。随着计算机网络技术和社会需求的发展,各平台的用户数量显著增加,需求的保险类型也日益增多,早前保险管理系统已逐渐不适应当前时代的需求,亟待升级改善,特别是针对软件安全开发的问题,尤为重要。
100%安全的软件和系统是不存在的[4],软件的安全开发目的是尽可能的减少软件安全漏洞,提高软件整体安全性。安全开发模型主要从软件生命周期的角度,对软件周期的各个环节进行安全风险评估和开发进行总结,通过采取各种安全活动来保证尽可能安全的软件,具有代表性的安全开发模型主要有SDL[5]、BSI[6]、CLASP[7]、敏捷SDL[8]等,其中SDL、BSI 适合大型软件开发过程,CLASP、敏捷SDL 偏向于轻量级软件安全开发。
本文采用敏捷SDL 的开发思路,设计构建了轻量级保险管理系统,并引入可视化技术展示项目情况,以解决实际生产环境中遇到的问题和提高系统流畅度,增强系统健壮性和安全性。
2 关键技术
2.1 B/S模式
B/S 即浏览器/服务器模式,其优点是成本更加低廉、维护更加方便、分布性更强和开发相对简单,客户端基本不需要维护,系统的功能扩展也非常容易,并且不需要安装对应的软件就能够在任何浏览器中操作,用户只需要要有一台能上网的电脑或手机等终端设备就能使用[9]。
2.2 Spring & Hibernate框架
Spring 框架当前主流的系统框架,具有易开发与维护和高效的缓存技术等优势。Spring 可以在一个小于2 兆比特的JAR 包中发布,运行时框架的内存资源开销远远低于其他程序,主要特征是控制反转(IoC)和面向切面编程(AOP),控制反转中的DI(Dependence Injection)依赖注入特性可以轻松对Bean 进行装配,Spring 为其他的数据访问框架提供了规范的接口,并且其AOP 特征还能实现TM(事务管理)等功能[10]。
Hibernate 使用面向对象(OOP)的方式开发程序以及功能强大的面向对象的查询语言HQL,其提供更加丰富灵活、更为强大的查询能力,减少了开发程序时使用JDBC 处理数据的时间[11],其MVC 模式的逻辑与实现分离的思想降低了代码实现的复杂度,同时使数据持久化的工作能够轻松完成[12]。
2.3 敏捷SDL
图1:保险管理系统业务流程图
图2:保险管理系统安全需求分析图
图3:系统功能模块划分
敏捷开发模型[13]是ThoughtWorks 公司的首席科学家Martin Fowlert 提出的应对快速需求而实施迭代、循序渐进的开发方法,基本理念在尽量短的周期内开发出系统的核心功能,尽快发布可用的软件版本,而牺牲前期完美的设计和编码,通过后续的生产周期中按照新需求不断迭代升级,完善产品。敏捷开发模式与传统开发模式区别就在于“快”——及时响应需求变化,使得多角色在持续集成的环境下,快速地迭代开发,快速完成系统构建[14]。敏捷SDL 是微软针对轻量级系统开发提出的一种改进SDL 安全开发模型,即通过短周期的迭代将系统各阶段安全需求、安全风险评估快速转换成系统整体安全性能就是基本开发思路[15],微软对SDL 进行调整,采用无阶段的迭代开发模型,以实现软件版本的快速更新和发布,使其能够快速利用敏捷开发流程更好地实现安全需求。敏捷开发模型下SDL 将快速实现安全设计、安全开发以及安全测试等工作,并根据需求响应快速迭代进行SDL 各阶段工作,确保每个阶段每个场景的安全,从而保证整个系统的安全[16]。
本系统以敏捷SDL 的开发模式,使用Spring 框架实现后端与Hibernate 实现数据库交互,构建保险管理系统。
3 系统需求分析
3.1 功能需求
本系统将面对不同业务和海量保单管理,实现用户管理、项目管理、任务管理、项目情况可视化等功能,需求设计如图1所示:
(1)系统性能,主要包括但不限于:运行稳定,快速响操作,友好的UI 设计,可移植性以及可属扩充性、灾备与系统容侵。
(2)用户角色:管理员、内勤人员和外勤人员。
(3)用户访问控制:管理员管理、控制其他角色权限,内勤人员具有项目管理及公开、发送文件与公告等权限,外勤人员具有查看公开项目的可视化界面、理赔情况、接收文件和查看公告等权限。
3.2 安全需求
由于系统涉及大量的参保人员的个人信息和重要数据,系统需要加强信息安全的保障工作,本文在功能需求的基础上,分析了系统的软件安全需求(图2),安全需求分析对象主要由系统管理员、内情人员、外勤人员、安全分析员、安全技术员等构成,安全需求分析主要包括:保密性、完整性、可用性、可认证性、授权、可审计性等核心安全需求以及安全架构、会话管理、错误/例外管理以及配置参数管理等通用安全需求,防御如对于XSS(Cross Site Script)跨站脚本攻击、SQL 注入等常见Web 攻击行为,确保信息系统以及信息内容的安全。
4 系统的设计与实现
4.1 系统的结构框架设计
系统主要分为三个模块,每个模块对应一个角色,每个模块中拥有对应的功能,系统功能模块划分如图3所示。
4.2 系统安全防范功能实现
(1)防止前端页面直接获取cookie。设置HttpOnly=true 的cookie 不能被js 获取到,无法用document.cookie 命令打出cookie的内容,故对HttpOnly 属性进行设置。
(2)SQL 注入语句过滤。通过查找语句中是否包含特殊字符或关键字如updata、select 等语句判断该语句是否为SQL 注入语句从而达到拦截的效果。
public static String sqlInject(String str){
图4:内勤人员项目管理界面
图5:外勤人员项目参保情况查看部分界面
4.3 主要功能模块实现
4.3.1 管理员模块
系统管理员可以对用户权限、菜单权限、系统配置及批处理进行管理,其中:
(1)权限管理:管理员可以指定人员的职级为内勤人员或外部人员;
(2)用户管理:可以对职员信息进行管理;
(3)批处理管理:对人勤人员制定的任务进行批量管理;
(4)系统配置:可以限制用户行为,查看系统运行情况和运行日志。
4.3.2 内勤人员模块
内勤用户实现项目管理、任务管理、信息导入、文件管理及公告管理扥功能,其中:
(1)项目管理:实现项目的增删改查,与外勤人员构建项目关联关系。
(2)任务管理:实现生成发布项目的信息报告供外勤人员下载查看。
(3)信息管理:实现快速导入保单信息及信息管理。
(4)文件管理:实现文件发送与接收功能,将项目分类报告发送给相关联的外勤人员。
公告管理:实现公告信息的发布与管理。
4.3.3 外勤人员模块
根据外勤人员的业务需求,实现参保情况查看、理赔情况查看、文件查看以及公告信息等功能。系统通过echarts 控件技术生动的展现了参保人员身份信息、就业情况、社保信息、居住地分布以及其他信息查看的可视化界面和项目理赔相关指标的图表形式,以及相对应的项目报告,供外勤人员查看下载。如图5所示。
5 结束语
随着系统使用数据的增加和复杂的外部网络环境,系统也将面临着各种攻击与挑战,需要将安全作为一种需求集成到系统开发的整个生命周期。敏捷SDL 不是一种方法或流程,而是一种思维模式[17],强调对每一个阶段都要进行安全风险评估和治理的实践过程,让轻量级快速升级迭代以及持续的有效控制,增强安全风险的应对能力和提高系统的安全防护能力。本文讨论了敏捷SDL 在轻量级保险管理系统实践的关键技术、功能需求分析以及安全需求分析,构建了基于B/S 架构的保险业务系统,实现保险行业不同角色的人员的项目管理功能,并引入eCharts 控件技术实现对项目情况的可视化展示与分析,为快速分析挖掘行业市场运行规律,提升企业办公效率和安全保障,增强企业竞争实力,提供了技术支撑和决策辅助工具。