徐會(huì)軍 周正日
(福建警察學(xué)院 福建省福州市 350007)
近年來(lái),中國(guó)經(jīng)濟(jì)和人均GDP 不斷提升,快速發(fā)展的市場(chǎng)經(jīng)濟(jì)推動(dòng)了我國(guó)保險(xiǎn)業(yè)蓬勃發(fā)展。據(jù)統(tǒng)計(jì),2017年我國(guó)成為全球第二大保險(xiǎn)市場(chǎng)[1],保費(fèi)收入超 5000 多億美元。2020年瑞士瑞再研究院發(fā)布Sigma 報(bào)告《世界保險(xiǎn)業(yè):渡過(guò)2020年疫情大風(fēng)暴》預(yù)計(jì)2021年中國(guó)保費(fèi)將超5 萬(wàn)億美元,引領(lǐng)全球保險(xiǎn)市場(chǎng)。蓬勃發(fā)展背后,保險(xiǎn)業(yè)務(wù)面臨著保險(xiǎn)大數(shù)據(jù)的管理和分析挑戰(zhàn),需要使用較為先進(jìn)的技術(shù)建立保險(xiǎn)管理系統(tǒng),提供更好的服務(wù)質(zhì)量和進(jìn)行更快的數(shù)據(jù)管理。康文波[2]、杜麗蘋(píng)[3]基于Web 的保險(xiǎn)業(yè)務(wù)管理信息系統(tǒng),一定程度提高了系統(tǒng)的運(yùn)行效率。隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)和社會(huì)需求的發(fā)展,各平臺(tái)的用戶數(shù)量顯著增加,需求的保險(xiǎn)類(lèi)型也日益增多,早前保險(xiǎn)管理系統(tǒng)已逐漸不適應(yīng)當(dāng)前時(shí)代的需求,亟待升級(jí)改善,特別是針對(duì)軟件安全開(kāi)發(fā)的問(wèn)題,尤為重要。
100%安全的軟件和系統(tǒng)是不存在的[4],軟件的安全開(kāi)發(fā)目的是盡可能的減少軟件安全漏洞,提高軟件整體安全性。安全開(kāi)發(fā)模型主要從軟件生命周期的角度,對(duì)軟件周期的各個(gè)環(huán)節(jié)進(jìn)行安全風(fēng)險(xiǎn)評(píng)估和開(kāi)發(fā)進(jìn)行總結(jié),通過(guò)采取各種安全活動(dòng)來(lái)保證盡可能安全的軟件,具有代表性的安全開(kāi)發(fā)模型主要有SDL[5]、BSI[6]、CLASP[7]、敏捷SDL[8]等,其中SDL、BSI 適合大型軟件開(kāi)發(fā)過(guò)程,CLASP、敏捷SDL 偏向于輕量級(jí)軟件安全開(kāi)發(fā)。
本文采用敏捷SDL 的開(kāi)發(fā)思路,設(shè)計(jì)構(gòu)建了輕量級(jí)保險(xiǎn)管理系統(tǒng),并引入可視化技術(shù)展示項(xiàng)目情況,以解決實(shí)際生產(chǎn)環(huán)境中遇到的問(wèn)題和提高系統(tǒng)流暢度,增強(qiáng)系統(tǒng)健壯性和安全性。
B/S 即瀏覽器/服務(wù)器模式,其優(yōu)點(diǎn)是成本更加低廉、維護(hù)更加方便、分布性更強(qiáng)和開(kāi)發(fā)相對(duì)簡(jiǎn)單,客戶端基本不需要維護(hù),系統(tǒng)的功能擴(kuò)展也非常容易,并且不需要安裝對(duì)應(yīng)的軟件就能夠在任何瀏覽器中操作,用戶只需要要有一臺(tái)能上網(wǎng)的電腦或手機(jī)等終端設(shè)備就能使用[9]。
Spring 框架當(dāng)前主流的系統(tǒng)框架,具有易開(kāi)發(fā)與維護(hù)和高效的緩存技術(shù)等優(yōu)勢(shì)。Spring 可以在一個(gè)小于2 兆比特的JAR 包中發(fā)布,運(yùn)行時(shí)框架的內(nèi)存資源開(kāi)銷(xiāo)遠(yuǎn)遠(yuǎn)低于其他程序,主要特征是控制反轉(zhuǎn)(IoC)和面向切面編程(AOP),控制反轉(zhuǎn)中的DI(Dependence Injection)依賴(lài)注入特性可以輕松對(duì)Bean 進(jìn)行裝配,Spring 為其他的數(shù)據(jù)訪問(wèn)框架提供了規(guī)范的接口,并且其AOP 特征還能實(shí)現(xiàn)TM(事務(wù)管理)等功能[10]。
Hibernate 使用面向?qū)ο螅∣OP)的方式開(kāi)發(fā)程序以及功能強(qiáng)大的面向?qū)ο蟮牟樵冋Z(yǔ)言HQL,其提供更加豐富靈活、更為強(qiáng)大的查詢能力,減少了開(kāi)發(fā)程序時(shí)使用JDBC 處理數(shù)據(jù)的時(shí)間[11],其MVC 模式的邏輯與實(shí)現(xiàn)分離的思想降低了代碼實(shí)現(xiàn)的復(fù)雜度,同時(shí)使數(shù)據(jù)持久化的工作能夠輕松完成[12]。
圖1:保險(xiǎn)管理系統(tǒng)業(yè)務(wù)流程圖
圖2:保險(xiǎn)管理系統(tǒng)安全需求分析圖
圖3:系統(tǒng)功能模塊劃分
敏捷開(kāi)發(fā)模型[13]是ThoughtWorks 公司的首席科學(xué)家Martin Fowlert 提出的應(yīng)對(duì)快速需求而實(shí)施迭代、循序漸進(jìn)的開(kāi)發(fā)方法,基本理念在盡量短的周期內(nèi)開(kāi)發(fā)出系統(tǒng)的核心功能,盡快發(fā)布可用的軟件版本,而犧牲前期完美的設(shè)計(jì)和編碼,通過(guò)后續(xù)的生產(chǎn)周期中按照新需求不斷迭代升級(jí),完善產(chǎn)品。敏捷開(kāi)發(fā)模式與傳統(tǒng)開(kāi)發(fā)模式區(qū)別就在于“快”——及時(shí)響應(yīng)需求變化,使得多角色在持續(xù)集成的環(huán)境下,快速地迭代開(kāi)發(fā),快速完成系統(tǒng)構(gòu)建[14]。敏捷SDL 是微軟針對(duì)輕量級(jí)系統(tǒng)開(kāi)發(fā)提出的一種改進(jìn)SDL 安全開(kāi)發(fā)模型,即通過(guò)短周期的迭代將系統(tǒng)各階段安全需求、安全風(fēng)險(xiǎn)評(píng)估快速轉(zhuǎn)換成系統(tǒng)整體安全性能就是基本開(kāi)發(fā)思路[15],微軟對(duì)SDL 進(jìn)行調(diào)整,采用無(wú)階段的迭代開(kāi)發(fā)模型,以實(shí)現(xiàn)軟件版本的快速更新和發(fā)布,使其能夠快速利用敏捷開(kāi)發(fā)流程更好地實(shí)現(xiàn)安全需求。敏捷開(kāi)發(fā)模型下SDL 將快速實(shí)現(xiàn)安全設(shè)計(jì)、安全開(kāi)發(fā)以及安全測(cè)試等工作,并根據(jù)需求響應(yīng)快速迭代進(jìn)行SDL 各階段工作,確保每個(gè)階段每個(gè)場(chǎng)景的安全,從而保證整個(gè)系統(tǒng)的安全[16]。
本系統(tǒng)以敏捷SDL 的開(kāi)發(fā)模式,使用Spring 框架實(shí)現(xiàn)后端與Hibernate 實(shí)現(xiàn)數(shù)據(jù)庫(kù)交互,構(gòu)建保險(xiǎn)管理系統(tǒng)。
本系統(tǒng)將面對(duì)不同業(yè)務(wù)和海量保單管理,實(shí)現(xiàn)用戶管理、項(xiàng)目管理、任務(wù)管理、項(xiàng)目情況可視化等功能,需求設(shè)計(jì)如圖1所示:
(1)系統(tǒng)性能,主要包括但不限于:運(yùn)行穩(wěn)定,快速響操作,友好的UI 設(shè)計(jì),可移植性以及可屬擴(kuò)充性、災(zāi)備與系統(tǒng)容侵。
(2)用戶角色:管理員、內(nèi)勤人員和外勤人員。
(3)用戶訪問(wèn)控制:管理員管理、控制其他角色權(quán)限,內(nèi)勤人員具有項(xiàng)目管理及公開(kāi)、發(fā)送文件與公告等權(quán)限,外勤人員具有查看公開(kāi)項(xiàng)目的可視化界面、理賠情況、接收文件和查看公告等權(quán)限。
由于系統(tǒng)涉及大量的參保人員的個(gè)人信息和重要數(shù)據(jù),系統(tǒng)需要加強(qiáng)信息安全的保障工作,本文在功能需求的基礎(chǔ)上,分析了系統(tǒng)的軟件安全需求(圖2),安全需求分析對(duì)象主要由系統(tǒng)管理員、內(nèi)情人員、外勤人員、安全分析員、安全技術(shù)員等構(gòu)成,安全需求分析主要包括:保密性、完整性、可用性、可認(rèn)證性、授權(quán)、可審計(jì)性等核心安全需求以及安全架構(gòu)、會(huì)話管理、錯(cuò)誤/例外管理以及配置參數(shù)管理等通用安全需求,防御如對(duì)于XSS(Cross Site Script)跨站腳本攻擊、SQL 注入等常見(jiàn)Web 攻擊行為,確保信息系統(tǒng)以及信息內(nèi)容的安全。
系統(tǒng)主要分為三個(gè)模塊,每個(gè)模塊對(duì)應(yīng)一個(gè)角色,每個(gè)模塊中擁有對(duì)應(yīng)的功能,系統(tǒng)功能模塊劃分如圖3所示。
(1)防止前端頁(yè)面直接獲取cookie。設(shè)置HttpOnly=true 的cookie 不能被js 獲取到,無(wú)法用document.cookie 命令打出cookie的內(nèi)容,故對(duì)HttpOnly 屬性進(jìn)行設(shè)置。
(2)SQL 注入語(yǔ)句過(guò)濾。通過(guò)查找語(yǔ)句中是否包含特殊字符或關(guān)鍵字如updata、select 等語(yǔ)句判斷該語(yǔ)句是否為SQL 注入語(yǔ)句從而達(dá)到攔截的效果。
public static String sqlInject(String str){
圖4:內(nèi)勤人員項(xiàng)目管理界面
圖5:外勤人員項(xiàng)目參保情況查看部分界面
4.3.1 管理員模塊
系統(tǒng)管理員可以對(duì)用戶權(quán)限、菜單權(quán)限、系統(tǒng)配置及批處理進(jìn)行管理,其中:
(1)權(quán)限管理:管理員可以指定人員的職級(jí)為內(nèi)勤人員或外部人員;
(2)用戶管理:可以對(duì)職員信息進(jìn)行管理;
(3)批處理管理:對(duì)人勤人員制定的任務(wù)進(jìn)行批量管理;
(4)系統(tǒng)配置:可以限制用戶行為,查看系統(tǒng)運(yùn)行情況和運(yùn)行日志。
4.3.2 內(nèi)勤人員模塊
內(nèi)勤用戶實(shí)現(xiàn)項(xiàng)目管理、任務(wù)管理、信息導(dǎo)入、文件管理及公告管理扥功能,其中:
(1)項(xiàng)目管理:實(shí)現(xiàn)項(xiàng)目的增刪改查,與外勤人員構(gòu)建項(xiàng)目關(guān)聯(lián)關(guān)系。
(2)任務(wù)管理:實(shí)現(xiàn)生成發(fā)布項(xiàng)目的信息報(bào)告供外勤人員下載查看。
(3)信息管理:實(shí)現(xiàn)快速導(dǎo)入保單信息及信息管理。
(4)文件管理:實(shí)現(xiàn)文件發(fā)送與接收功能,將項(xiàng)目分類(lèi)報(bào)告發(fā)送給相關(guān)聯(lián)的外勤人員。
公告管理:實(shí)現(xiàn)公告信息的發(fā)布與管理。
4.3.3 外勤人員模塊
根據(jù)外勤人員的業(yè)務(wù)需求,實(shí)現(xiàn)參保情況查看、理賠情況查看、文件查看以及公告信息等功能。系統(tǒng)通過(guò)echarts 控件技術(shù)生動(dòng)的展現(xiàn)了參保人員身份信息、就業(yè)情況、社保信息、居住地分布以及其他信息查看的可視化界面和項(xiàng)目理賠相關(guān)指標(biāo)的圖表形式,以及相對(duì)應(yīng)的項(xiàng)目報(bào)告,供外勤人員查看下載。如圖5所示。
隨著系統(tǒng)使用數(shù)據(jù)的增加和復(fù)雜的外部網(wǎng)絡(luò)環(huán)境,系統(tǒng)也將面臨著各種攻擊與挑戰(zhàn),需要將安全作為一種需求集成到系統(tǒng)開(kāi)發(fā)的整個(gè)生命周期。敏捷SDL 不是一種方法或流程,而是一種思維模式[17],強(qiáng)調(diào)對(duì)每一個(gè)階段都要進(jìn)行安全風(fēng)險(xiǎn)評(píng)估和治理的實(shí)踐過(guò)程,讓輕量級(jí)快速升級(jí)迭代以及持續(xù)的有效控制,增強(qiáng)安全風(fēng)險(xiǎn)的應(yīng)對(duì)能力和提高系統(tǒng)的安全防護(hù)能力。本文討論了敏捷SDL 在輕量級(jí)保險(xiǎn)管理系統(tǒng)實(shí)踐的關(guān)鍵技術(shù)、功能需求分析以及安全需求分析,構(gòu)建了基于B/S 架構(gòu)的保險(xiǎn)業(yè)務(wù)系統(tǒng),實(shí)現(xiàn)保險(xiǎn)行業(yè)不同角色的人員的項(xiàng)目管理功能,并引入eCharts 控件技術(shù)實(shí)現(xiàn)對(duì)項(xiàng)目情況的可視化展示與分析,為快速分析挖掘行業(yè)市場(chǎng)運(yùn)行規(guī)律,提升企業(yè)辦公效率和安全保障,增強(qiáng)企業(yè)競(jìng)爭(zhēng)實(shí)力,提供了技術(shù)支撐和決策輔助工具。