本發(fā)明涉及交互式數(shù)據(jù)可視化應(yīng)用領(lǐng)域,特別涉及一種交互式數(shù)據(jù)系統(tǒng)通用安全防護(hù)系統(tǒng)。
背景技術(shù):
應(yīng)用系統(tǒng)的安全性越來(lái)越受到人們的關(guān)注,利用web應(yīng)用系統(tǒng)的漏洞進(jìn)行入侵、滲透已經(jīng)成為互聯(lián)網(wǎng)安全隱患之一,如何保障系統(tǒng)安全和企業(yè)核心數(shù)據(jù)不受破壞,已成為企業(yè)信息部門的焦點(diǎn)問(wèn)題。
軟件系統(tǒng)的信息安全,包括信息保密性、完整性和可用性。保密性:指高級(jí)別信息僅在授權(quán)情況下流向低級(jí)別的客戶體;完整性:指信息不會(huì)被非授權(quán)修改,信息保持一致性等;可用性:指合法用戶的正常請(qǐng)求能及時(shí)、正確、安全地得到服務(wù)或回應(yīng)。傳統(tǒng)web應(yīng)用系統(tǒng)的做法是,it人員事先根據(jù)需求,分解出系統(tǒng)的安全需求,并對(duì)安全需求進(jìn)行定制化開發(fā),將安全模塊和系統(tǒng)其他部分定制開發(fā)為一個(gè)整體,這樣做的問(wèn)題是,針對(duì)不同的web應(yīng)用系統(tǒng),即使其面對(duì)的是同樣的或相似的安全需求時(shí),均需要重新定制開發(fā),造成研發(fā)資源浪費(fèi)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有技術(shù)中需要對(duì)每一個(gè)不同的web系統(tǒng)的不同安全需求做定制開發(fā),即使不同web系統(tǒng)安全需求相似也需要重新進(jìn)行整體設(shè)計(jì)的問(wèn)題,提供一種可以針對(duì)多種系統(tǒng)進(jìn)行防護(hù)的交互式數(shù)據(jù)web系統(tǒng)通用安全防護(hù)系統(tǒng)。
為了實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明提供了以下技術(shù)方案:
一種交互式數(shù)據(jù)系統(tǒng)通用安全防護(hù)系統(tǒng),依次包括,
數(shù)據(jù)輸入接口,與交互式數(shù)據(jù)系統(tǒng)的人機(jī)交互輸入連接;
防護(hù)模塊,對(duì)子數(shù)據(jù)輸入接口輸入的數(shù)據(jù)進(jìn)行安全檢測(cè),將通過(guò)安全檢測(cè)的數(shù)據(jù)自數(shù)據(jù)輸出接口輸出;
數(shù)據(jù)輸出接口,與交互式數(shù)據(jù)系統(tǒng)的數(shù)據(jù)處理模塊連接。
進(jìn)一步的,所述防護(hù)模塊包括鑒權(quán)資源注冊(cè)模塊、csrf攻擊防護(hù)模塊、參數(shù)校驗(yàn)?zāi)K、跨站腳本攻擊防護(hù)模塊、登錄檢驗(yàn)?zāi)K、sql注入防護(hù)模塊、xml實(shí)體注入攻擊防護(hù)模塊中的至少兩種;各個(gè)模塊按照指定順序依次對(duì)輸入數(shù)據(jù)進(jìn)行安全檢測(cè);
所述鑒權(quán)資源注冊(cè)模塊用于對(duì)交互式數(shù)據(jù)系統(tǒng)的菜單請(qǐng)求數(shù)據(jù)以及輸入的url進(jìn)行鑒權(quán);
所述csrf攻擊防護(hù)模塊用于對(duì)數(shù)據(jù)進(jìn)行csrf攻擊防護(hù)檢測(cè);
所述參數(shù)校驗(yàn)?zāi)K用于對(duì)接收的所有url的參數(shù)進(jìn)行參數(shù)校驗(yàn);
跨站腳本攻擊防護(hù)模塊用于接收到數(shù)據(jù)進(jìn)行跨站腳本攻擊防護(hù);
登錄校驗(yàn)?zāi)K用于對(duì)登錄用戶的權(quán)限進(jìn)行檢測(cè);
sql注入防護(hù)模塊用于防止sql注入攻擊;
xml實(shí)體注入攻擊防護(hù)模塊用于防止xml實(shí)體注入攻擊。
進(jìn)一步的,所述csrf攻擊防護(hù)模塊對(duì)每個(gè)請(qǐng)求的參數(shù)中攜帶的token值進(jìn)行校驗(yàn);所述token值為安全隨機(jī)數(shù);
請(qǐng)求中加入token值的方法為:使用csrf請(qǐng)求屬性來(lái)獲取當(dāng)前的csrftoken;或,使用springsecurity的jsp標(biāo)簽庫(kù)中的csfrinput標(biāo)簽。
進(jìn)一步的,所述sql注入防護(hù)模塊使用preparedstatement防范sql注入攻擊,或,使用spring提供的namedparameterjdbctemplate類執(zhí)行sql防范sql注入攻擊。
進(jìn)一步的,所述xml實(shí)體注入攻擊防護(hù)模塊通過(guò)解析http/https請(qǐng)求中xml結(jié)構(gòu)參數(shù)防止xml實(shí)體注入、解析靜態(tài)xml配置文件防止xml實(shí)體注入或解析excel防止xml實(shí)體注入。
進(jìn)一步的,所述防護(hù)模塊包括隱私保護(hù)模塊,所述隱私保護(hù)模塊用于根據(jù)用戶的設(shè)置,對(duì)指定的參數(shù)進(jìn)行全部隱藏顯示或部分隱藏顯示。
進(jìn)一步的,所述防護(hù)模塊包括個(gè)性化設(shè)置模塊,所述個(gè)性化設(shè)置模塊用于用戶設(shè)置交互式數(shù)據(jù)系統(tǒng)中參數(shù)的必填項(xiàng)和/或參數(shù)的類型、取值范圍。
進(jìn)一步的,所述防護(hù)模塊包括運(yùn)行日志保護(hù)模塊用于對(duì)交互式數(shù)據(jù)系統(tǒng)的所有操作記錄日志,并對(duì)日志的訪問(wèn)進(jìn)行控制,同時(shí),對(duì)日志中的敏感數(shù)據(jù)進(jìn)行匿名化處理。
進(jìn)一步的,所述防護(hù)模塊包括運(yùn)行動(dòng)態(tài)處理模塊,所述運(yùn)行動(dòng)態(tài)處理模塊用于協(xié)調(diào)所述防護(hù)模塊中其他各個(gè)功能模塊的運(yùn)行
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果:本發(fā)明通過(guò)提供一種交互式數(shù)據(jù)系統(tǒng)通用安全防護(hù)系統(tǒng)可達(dá)到如下效果:
1、對(duì)于業(yè)務(wù)編排人員:不需要知曉本發(fā)明提供安全系統(tǒng)的具體開發(fā)技術(shù),只需要了解本發(fā)明提供的安全防護(hù)系統(tǒng)提供的功能、接口和使用方法,就能通過(guò)將本發(fā)明提供的安全系統(tǒng)接口與交互式數(shù)據(jù)系統(tǒng)對(duì)接,從而獨(dú)立地編排出具有安全能力的交互式數(shù)據(jù)web應(yīng)用系統(tǒng)。
2、對(duì)于數(shù)據(jù)可視化的交互式數(shù)據(jù)應(yīng)用平臺(tái):本發(fā)明提供安全系統(tǒng)采用松耦合設(shè)計(jì),分解成多個(gè)獨(dú)立模塊,只要平臺(tái)具有擴(kuò)展模塊的能,就能將各個(gè)模塊有機(jī)的組合起來(lái),生成具有安全能力的web應(yīng)用系統(tǒng)。
3、對(duì)于項(xiàng)目組:本發(fā)明提供安全系統(tǒng)的各模塊具有高復(fù)用性,模塊開發(fā)完成能應(yīng)用于所有web應(yīng)用系統(tǒng),不再為每個(gè)交互式數(shù)據(jù)應(yīng)用(app)定制化開發(fā)而投入人力,大大地提高了開發(fā)效率、節(jié)省開發(fā)資源、加快開發(fā)周期。
4、對(duì)于交互式數(shù)據(jù)應(yīng)用的升級(jí):本發(fā)明提供安全系統(tǒng)的各模塊具有獨(dú)立發(fā)布,獨(dú)立安裝的能力。從而避免了交互式數(shù)據(jù)應(yīng)用與安全必須捆綁發(fā)布的困境,大大提升企業(yè)的it集成實(shí)施能力。
附圖說(shuō)明:
圖1是本發(fā)明提供的交互式數(shù)據(jù)系統(tǒng)通用安全防護(hù)系統(tǒng)應(yīng)用示意圖。
圖2是本發(fā)明提供的交互式數(shù)據(jù)系統(tǒng)通用安全防護(hù)系統(tǒng)安全處理流程示例。
圖3是本發(fā)明提供的交互式數(shù)據(jù)系統(tǒng)通用安全防護(hù)系統(tǒng)個(gè)性化安全需求的動(dòng)態(tài)解析及校驗(yàn)處理。
圖4是本發(fā)明中安全防護(hù)系統(tǒng)加載到具體應(yīng)用中的流程實(shí)施例。
具體實(shí)施方式
下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)描述。但不應(yīng)將此理解為本發(fā)明上述主題的范圍僅限于以下的實(shí)施例,凡基于本發(fā)明內(nèi)容所實(shí)現(xiàn)的技術(shù)均屬于本發(fā)明的范圍。
如圖1所示,本實(shí)施例提供一種交互式數(shù)據(jù)系統(tǒng)通用安全防護(hù)系統(tǒng),依次包括,
數(shù)據(jù)輸入接口,與交互式數(shù)據(jù)系統(tǒng)的人機(jī)交互輸入連接;
防護(hù)模塊,對(duì)子數(shù)據(jù)輸入接口輸入的數(shù)據(jù)進(jìn)行安全檢測(cè),將通過(guò)安全檢測(cè)的數(shù)據(jù)自數(shù)據(jù)輸出接口輸出;
數(shù)據(jù)輸出接口,與交互式數(shù)據(jù)系統(tǒng)的數(shù)據(jù)處理模塊連接。
所述防護(hù)模塊包括鑒權(quán)資源注冊(cè)模塊、csrf攻擊防護(hù)模塊、參數(shù)校驗(yàn)?zāi)K、跨站腳本攻擊防護(hù)模塊、登錄檢驗(yàn)?zāi)K、sql注入防護(hù)模塊、xml實(shí)體注入攻擊防護(hù)模塊,我們將以上所有模塊的集合體稱之為web安全模塊;web安全模塊各個(gè)模塊按照指定順序依次對(duì)輸入數(shù)據(jù)進(jìn)行安全檢測(cè)。另外,本實(shí)施例中,防護(hù)模塊還包括隱私保護(hù)模塊、個(gè)性化設(shè)置模塊、運(yùn)行日志保護(hù)模塊和運(yùn)行動(dòng)態(tài)處理模塊;但是應(yīng)注意的是,用戶可根據(jù)自己app的具體需要對(duì)上述模塊進(jìn)行選擇全部啟用或者部分啟用,本實(shí)施例中,以全部啟用為例進(jìn)行解釋。
請(qǐng)注意的是,鑒權(quán)資源注冊(cè)模塊用于對(duì)交互式數(shù)據(jù)系統(tǒng)的菜單請(qǐng)求數(shù)據(jù)以及輸入的url進(jìn)行鑒權(quán);理論上,數(shù)據(jù)可視化平臺(tái)(交互式數(shù)據(jù)系統(tǒng))的所有具體應(yīng)用(app)的菜單以及界面的url請(qǐng)求都需要經(jīng)過(guò)鑒權(quán)資源注冊(cè)的鑒權(quán);具體的,用戶需要先將app的所有url按照其安全配置模板進(jìn)行配置;而在編譯打包生成具體的app時(shí),解析app包含的url資源信息,動(dòng)態(tài)生成install和uninstall的url資源定義sql腳本,放在app安裝包的對(duì)應(yīng)目錄下;注冊(cè)的資源信息里,包含界面框架、界面導(dǎo)航樹、功能,從而實(shí)現(xiàn)精細(xì)化訪問(wèn)安全控制;安裝app時(shí),將上述sql腳本寫入到數(shù)據(jù)庫(kù)的對(duì)應(yīng)表中;對(duì)應(yīng)表如可以是資源定義信息表、資源和角色歸屬關(guān)系表、資源定義表述表中的一種或多種等。
所述csrf攻擊防護(hù)模塊用于對(duì)數(shù)據(jù)進(jìn)行csrf攻擊防護(hù)檢測(cè),所述csrf攻擊防護(hù)模塊對(duì)每個(gè)請(qǐng)求的參數(shù)中攜帶的token值進(jìn)行校驗(yàn);所述token值為安全隨機(jī)數(shù);請(qǐng)求中加入token值的方法為:使用csrf請(qǐng)求屬性來(lái)獲取當(dāng)前的csrftoken;或,使用springsecurity的jsp標(biāo)簽庫(kù)中的csfrinput標(biāo)簽;如果使用json,可以將token信息放到請(qǐng)求頭中。一種典型的模式是將csrftoken引入到源標(biāo)簽中??蓪⑺械膖oken引入到所有的ajax請(qǐng)求中。
所述參數(shù)校驗(yàn)?zāi)K用于對(duì)接收的所有url的參數(shù)進(jìn)行參數(shù)校驗(yàn);包含本安全系統(tǒng)的具體應(yīng)用編譯打包生成的app時(shí),拷貝validate-common-config.xml文件到app的web-inf\validate目錄下,validate文件夾沒(méi)有的話新建。參數(shù)校驗(yàn)web安全最重要的一道防御,嚴(yán)格的參數(shù)校驗(yàn)?zāi)軌蚍乐钩R姷膕ql注入、os注入、目錄遍歷攻擊、跨站腳本攻擊等;參數(shù)校驗(yàn)規(guī)則配置文件的命名規(guī)則為validate-rule_xxx.xml,只要以validate-rule開頭的xml文件就可以;該文件也需要放入app的web-inf\validate目錄下;編譯打包時(shí)拷貝validate-rule_xxx.xml文件到validate目錄,文件中定義app中固定的參數(shù)校驗(yàn)規(guī)則,動(dòng)態(tài)的參數(shù)校驗(yàn)采用另外的方案實(shí)現(xiàn)(后文中會(huì)描述)。應(yīng)注意的是,該配置文件合入后,該app的接收所有url的參數(shù)都會(huì)進(jìn)行參數(shù)校驗(yàn)。
跨站腳本攻擊防護(hù)模塊用于接收到數(shù)據(jù)進(jìn)行跨站腳本攻擊防護(hù);跨站腳本攻擊防護(hù)模塊封裝了一個(gè)防xss攻擊的工具組件,它實(shí)現(xiàn)了常見的防xss攻擊的轉(zhuǎn)義方法;防xss攻擊轉(zhuǎn)義類型有三種:html進(jìn)行轉(zhuǎn)義、htmlattribute進(jìn)行轉(zhuǎn)義、javascript進(jìn)行轉(zhuǎn)義。
登錄校驗(yàn)?zāi)K用于對(duì)登錄用戶的權(quán)限進(jìn)行檢測(cè);app安裝完成后,基于安裝時(shí)注冊(cè)到交互式數(shù)據(jù)系統(tǒng)的url資源定義信息,系統(tǒng)管理員可登錄交互式數(shù)據(jù)系統(tǒng)為app向其他角色授權(quán);具有app訪問(wèn)權(quán)限的角色登錄成功后,便可使用其權(quán)限范圍內(nèi)的功能;交互式數(shù)據(jù)系統(tǒng)的登錄及安全控制,統(tǒng)一由交互式數(shù)據(jù)系統(tǒng)的安全模塊提供服務(wù);安全模塊的登錄服務(wù)中,實(shí)現(xiàn)了“登錄認(rèn)證防暴力破解”、“認(rèn)證管理”、“登錄口令保護(hù)”、“會(huì)話管理”等功能;平臺(tái)的授權(quán)用戶接口包括單點(diǎn)安全登錄模式及單系統(tǒng)安全登錄模式兩種接口方式,同時(shí),本安全系統(tǒng)為用戶角色配置可訪問(wèn)資源的功能頁(yè)面,具有系統(tǒng)管理員級(jí)別的用戶登錄后,可在該功能模塊給其他低級(jí)別用戶角色賦權(quán);具體的,登錄時(shí),驗(yàn)證登錄用戶是否是系統(tǒng)中的用戶,無(wú)效用戶則提示身份無(wú)效,停留在登錄頁(yè)面;有效用戶則驗(yàn)證密碼是否正確,正確則為用戶生成單點(diǎn)登錄憑證;權(quán)限過(guò)濾組件判定當(dāng)前登錄用戶身份,最終呈現(xiàn)他可訪問(wèn)的資源;用戶登錄后,在系統(tǒng)內(nèi)的所有操作發(fā)起的請(qǐng)求,根據(jù)具體情況會(huì)經(jīng)過(guò)web安全框架的安全組件對(duì)請(qǐng)求進(jìn)行驗(yàn)證。
sql注入防護(hù)模塊用于防止sql注入攻擊,所述sql注入防護(hù)模塊使用preparedstatement防范sql注入攻擊,或,使用spring提供的namedparameterjdbctemplate類執(zhí)行sql防范sql注入攻擊。
xml實(shí)體注入攻擊防護(hù)模塊用于防止xml實(shí)體注入攻擊,所述xml實(shí)體注入攻擊防護(hù)模塊通過(guò)解析http/https請(qǐng)求中xml結(jié)構(gòu)參數(shù)防止xml實(shí)體注入、解析靜態(tài)xml配置文件防止xml實(shí)體注入或解析excel防止xml實(shí)體注入。
所述隱私保護(hù)模塊,所述隱私保護(hù)模塊用于根據(jù)用戶的設(shè)置,對(duì)指定的參數(shù)進(jìn)行全部隱藏顯示或部分隱藏顯示。交互式數(shù)據(jù)系統(tǒng)新建角色時(shí)默認(rèn)是需要對(duì)用戶標(biāo)識(shí)(個(gè)人數(shù)據(jù)標(biāo)識(shí))屏蔽的,如果該角色對(duì)于用戶標(biāo)識(shí)是屏蔽的,該角色下的用戶登錄平臺(tái)時(shí)看到的個(gè)人數(shù)據(jù)應(yīng)該是屏蔽(匿名化)的。隱私保護(hù)模塊分為個(gè)人數(shù)據(jù)隱私保護(hù)和日志中個(gè)人數(shù)據(jù)匿名化;針對(duì)個(gè)人數(shù)據(jù)時(shí):針對(duì)常見的涉及用戶隱私個(gè)人數(shù)據(jù)參數(shù),app界面呈現(xiàn)時(shí)需要做匿名化處理。比如msisdn(電話號(hào)碼)18912345678,如果末尾屏蔽4位,界面將呈現(xiàn)匿名化后的結(jié)果18912345****。對(duì)于匿名化的數(shù)據(jù),需要調(diào)用平臺(tái)工具組件的方法做進(jìn)行匿名化。編排app時(shí),設(shè)置那些數(shù)據(jù)需進(jìn)行匿名化;app運(yùn)行時(shí),動(dòng)態(tài)解析匿名化配置信息,調(diào)用隱私保護(hù)模塊完成匿名化處理。針對(duì)操作日志中個(gè)人數(shù)據(jù)匿名化操作,與web界面不同,操作日志中個(gè)人數(shù)據(jù)匿名化開關(guān)在setting->安全管理->個(gè)人數(shù)據(jù)匿名化配置界面。
所述防護(hù)模塊包括個(gè)性化設(shè)置模塊,所述個(gè)性化設(shè)置模塊用于用戶設(shè)置交互式數(shù)據(jù)系統(tǒng)中參數(shù)的必填項(xiàng)和/或參數(shù)的類型、取值范圍具體的,數(shù)據(jù)可視化平臺(tái)的ui設(shè)計(jì)器編排頁(yè)面時(shí),可根據(jù)app應(yīng)用的個(gè)性化安全需求,配置參數(shù)校驗(yàn)規(guī)則。例如,編排人員可為app頁(yè)面中某個(gè)控件(如文本框)設(shè)置必填、合法的身份證號(hào)、ip、email地址、長(zhǎng)度限制、值范圍等常見的檢驗(yàn)規(guī)則,這些規(guī)則以選項(xiàng)形式選擇。超出常見部分,編排人員可自定義正則表達(dá)式完成業(yè)務(wù)需求;用于也可以為一個(gè)控件指定多個(gè)參數(shù)校驗(yàn)規(guī)則,比如某參數(shù)既需必填輸入值又必須在指定范圍內(nèi)。配置的安全規(guī)則在保存頁(yè)面時(shí)一并存在在頁(yè)面源文件內(nèi)。當(dāng)app編譯發(fā)布時(shí),分離出源文件中設(shè)置的安全規(guī)則信息,作為app運(yùn)行時(shí)參數(shù)校驗(yàn)的依據(jù)。
所述防護(hù)模塊包括運(yùn)行日志保護(hù)模塊用于對(duì)交互式數(shù)據(jù)系統(tǒng)的所有操作記錄日志,并對(duì)日志的訪問(wèn)進(jìn)行控制,具體的操作如表一所示。
表一
所述防護(hù)模塊包括運(yùn)行動(dòng)態(tài)處理模塊,所述運(yùn)行動(dòng)態(tài)處理模塊用于協(xié)調(diào)所述防護(hù)模塊中其他各個(gè)功能模塊的運(yùn)行
本發(fā)明提供的安全系統(tǒng)通過(guò)配置引入模塊與具體app配置為一體,具體如圖4所示,采用web.xml配置引入:編譯打包生成的app,該配置文件不需要修改,直接拷貝到app的web-inf\目錄下即可;web.xml中包含安全的相關(guān)配置:配置單點(diǎn)登錄/退出、數(shù)據(jù)可視化平臺(tái)自定義的日志組件、安全請(qǐng)求前綴校驗(yàn)組件、處理各模塊間session對(duì)應(yīng)關(guān)系組件、判斷應(yīng)用的url是否已經(jīng)注冊(cè)的組件、攔截請(qǐng)求的組件等等;其中,配置單點(diǎn)登錄/退出由cas單點(diǎn)退出過(guò)濾器完成,系統(tǒng)中所有請(qǐng)求都會(huì)經(jīng)過(guò)這個(gè)過(guò)濾器處理,它主要完成當(dāng)前登錄用戶的請(qǐng)求會(huì)話是否有效,若無(wú)效就取消登錄憑證,并自動(dòng)調(diào)轉(zhuǎn)到登錄頁(yè)面;數(shù)據(jù)可視化平臺(tái)自定義的日志組件用于記錄日志,根據(jù)日志文件大小和生成時(shí)長(zhǎng)等閾值設(shè)置來(lái)壓縮備份日志文件;安全請(qǐng)求前綴校驗(yàn)組件為請(qǐng)求前綴校驗(yàn)過(guò)濾器,其用于調(diào)用系統(tǒng)接口的請(qǐng)求,需驗(yàn)證發(fā)起請(qǐng)求的用戶身份憑證;處理各模塊間session對(duì)應(yīng)關(guān)系組件用于驗(yàn)證請(qǐng)求是從哪個(gè)頁(yè)面鏈接過(guò)來(lái)的,系統(tǒng)中所有請(qǐng)求都會(huì)經(jīng)過(guò)這個(gè)過(guò)濾器處理,它驗(yàn)證請(qǐng)求是否從信任的頁(yè)面鏈接發(fā)起的;判斷應(yīng)用的url是否已經(jīng)注冊(cè)的組件為url是否在系統(tǒng)已經(jīng)配置的驗(yàn)證過(guò)濾器,系統(tǒng)中所有請(qǐng)求都會(huì)經(jīng)過(guò)這個(gè)過(guò)濾器處理,它驗(yàn)證請(qǐng)求的url是否是系統(tǒng)中的鑒權(quán)資源(app安裝時(shí),將它的url注冊(cè)到系統(tǒng)中);如果是鑒權(quán)資源則放行,否則結(jié)束請(qǐng)求。
spring-security.xml配置文件引入:編譯打包時(shí)會(huì)將該文件copy到app的web-inf\conf目錄下即可;主要配置包括:安全工具組件、注冊(cè)并配置防csrf攻擊組件、注冊(cè)并配置dos攻擊組件、注冊(cè)并配置參數(shù)校驗(yàn)組件、注冊(cè)并配置cookie過(guò)濾器、注冊(cè)并配置請(qǐng)求頭校驗(yàn)組件、注冊(cè)并配置文件上傳驗(yàn)證組件、注冊(cè)并配置用戶認(rèn)證的入口、注冊(cè)并配置系統(tǒng)訪問(wèn)url資源驗(yàn)證組件、注冊(cè)并配置系統(tǒng)對(duì)外接口驗(yàn)證組件、注冊(cè)并配置集成ssocas組件等等;注冊(cè)配置的這些組件,在app運(yùn)行時(shí)完成安全過(guò)濾作用。例如,當(dāng)用戶上傳文件時(shí),根據(jù)app編排的個(gè)性化安全配置信息(如允許上傳的文件類型、文件大小等),使用上傳驗(yàn)證組件完成校驗(yàn)。校驗(yàn)通過(guò),繼續(xù)執(zhí)行后續(xù)業(yè)務(wù)邏輯;校驗(yàn)失敗,結(jié)束請(qǐng)求并提示用戶。
參數(shù)校驗(yàn)組件:先驗(yàn)證請(qǐng)求url是否是白名單,若是就不做參數(shù)校驗(yàn),若不是就要做參數(shù)校驗(yàn);根據(jù)url找到請(qǐng)求參數(shù)校驗(yàn)配置信息,對(duì)各個(gè)參數(shù)進(jìn)行驗(yàn)證;驗(yàn)證不通過(guò)則結(jié)束請(qǐng)求;白名單和參數(shù)校驗(yàn)配置信息分別在web-inf\validate\validate-common-config.xml、web-inf\validate\validate-rule-app.xml配置文件中,配置文件由spring框架加載;參數(shù)校驗(yàn)規(guī)則配置成正則表達(dá)式,驗(yàn)證時(shí)將參數(shù)值與正則表達(dá)式匹配,若能匹配表示驗(yàn)證通過(guò),否則驗(yàn)證不通過(guò)。
防csrf攻擊組件:驗(yàn)證系統(tǒng)中所有請(qǐng)求,首先查詢當(dāng)前請(qǐng)求url是否在系統(tǒng)中的鑒權(quán)資源url庫(kù)中存在,若存在則放行;若不存在,需驗(yàn)證當(dāng)前請(qǐng)求url是否設(shè)置成了系統(tǒng)防csrf攻擊白名單,是白名單則放行,不是則結(jié)束請(qǐng)求。
防csrf攻擊白名單配置在web-inf\conf\spring-security.xml配置文件中,配置文件由spring框架加載。
防doc攻擊組件:驗(yàn)證系統(tǒng)中所有請(qǐng)求在時(shí)間周期內(nèi)的發(fā)起次數(shù)是否超過(guò)攻擊次數(shù)閾值,未超過(guò)則繼續(xù)放行;超過(guò)了則結(jié)束每個(gè)請(qǐng)求,直到訪問(wèn)頻率恢復(fù)正常。從而防止惡意攻擊。
時(shí)間周期和攻擊次數(shù)閾值配置在web-inf\conf\spring-security.xml配置文件中(該配置文件名稱和路徑僅為舉例,任何指定路徑和配置文件名稱均可實(shí)現(xiàn)相應(yīng)功能,因此本示例不代表任何限定),配置文件由spring框架加載。
cookie安全處理組件:系統(tǒng)檢測(cè)當(dāng)前請(qǐng)求是否是cookie安全白名單,如果是白名單則不作處理;如果不是白名單,則設(shè)置響應(yīng)的cookie為安全cookie:設(shè)置secure和httponly屬性為true;secure為true,表示cookie會(huì)被以安全的形式向服務(wù)器傳輸,也就是只能在https連接中被瀏覽器傳遞到服務(wù)器端進(jìn)行會(huì)話驗(yàn)證,如果是http連接則不會(huì)傳遞該信息,所以不會(huì)被竊取到cookie的具體內(nèi)容。httponly為true,那么通過(guò)程序(js腳本、applet等)將無(wú)法讀取到cookie信息,這樣能有效的防止xss攻擊。
權(quán)限過(guò)濾組件:將所有的資源和權(quán)限對(duì)應(yīng)關(guān)系建立起來(lái),即定義某一資源可以被哪些角色訪問(wèn)。等用戶登錄系統(tǒng)時(shí),決定當(dāng)前用戶具有的角色,是否有足夠的權(quán)限去訪問(wèn)某些資源;最終呈現(xiàn)他可訪問(wèn)的資源。用戶進(jìn)入系統(tǒng)后,發(fā)起的所有請(qǐng)求也要經(jīng)過(guò)該組件,決定當(dāng)前用戶是否發(fā)起了超過(guò)其權(quán)限的請(qǐng)求。
具體運(yùn)作時(shí),如圖2所示,app的使用者向app頁(yè)面(交互式數(shù)據(jù)系統(tǒng)的人機(jī)交互輸入)輸入請(qǐng)求,app頁(yè)面將該請(qǐng)求通過(guò)數(shù)據(jù)輸入接口發(fā)送至防護(hù)模塊,防護(hù)模塊中的各個(gè)模塊按照指定順序依次對(duì)請(qǐng)求數(shù)據(jù)進(jìn)行安全檢測(cè),圖2中給出了各個(gè)模塊進(jìn)行檢測(cè)的示例,如url是否授權(quán)檢測(cè),請(qǐng)求是否具有攻擊性檢測(cè),參數(shù)檢驗(yàn)檢測(cè),......,直至完成所有檢測(cè)后,將檢測(cè)通過(guò)結(jié)果以及數(shù)據(jù)通過(guò)數(shù)據(jù)輸出接口返給app具體執(zhí)行引擎(交互式數(shù)據(jù)系統(tǒng)的數(shù)據(jù)處理模塊);引擎將響應(yīng)結(jié)果反饋至頁(yè)面;在一些情況下,反饋結(jié)果需對(duì)是否跨站腳本攻擊進(jìn)行處理,此時(shí),頁(yè)面將跨站腳本攻待檢測(cè)數(shù)據(jù)通過(guò)數(shù)據(jù)輸入接口發(fā)送至防護(hù)模塊進(jìn)行檢測(cè),通過(guò)檢測(cè)后在頁(yè)面顯示。應(yīng)注意的是,在防護(hù)模塊的檢測(cè)過(guò)程中,任何一項(xiàng)檢測(cè)沒(méi)有通過(guò),則該請(qǐng)求或者數(shù)據(jù)不會(huì)被傳遞至app具體執(zhí)行引擎(交互式數(shù)據(jù)系統(tǒng)的數(shù)據(jù)處理模塊),從而防止app的具體核心處理模塊被攻擊。
另一具體示例中,用戶操作發(fā)起請(qǐng)求后,按照如下步驟進(jìn)行處理(1)進(jìn)入cas單點(diǎn)退出過(guò)濾器。如果是退出系統(tǒng)的請(qǐng)求,則取消登錄憑證,并自動(dòng)調(diào)轉(zhuǎn)到登錄頁(yè)面;(2)進(jìn)入請(qǐng)求前綴校驗(yàn)過(guò)濾器。如果是調(diào)用系統(tǒng)接口請(qǐng)求,則驗(yàn)證請(qǐng)求的用戶身份憑證是否合法;(3)進(jìn)入從哪個(gè)頁(yè)面鏈接過(guò)來(lái)的驗(yàn)證過(guò)濾器,保障請(qǐng)求是否從信任的頁(yè)面鏈接發(fā)起的;(4)進(jìn)入url是否在系統(tǒng)已經(jīng)配置的驗(yàn)證過(guò)濾器,保障請(qǐng)求的是合法資源;(5)進(jìn)入?yún)?shù)校驗(yàn)組件,保障請(qǐng)求參數(shù)合法有效;(6)進(jìn)入防csrf攻擊組件;(7)進(jìn)入防doc攻擊組件;(8)進(jìn)入權(quán)限過(guò)濾組件;(9)如果編排時(shí)配置了個(gè)性化/隱私保護(hù)的安全能力,則進(jìn)入個(gè)性化/隱私保護(hù)安全組件;(10)實(shí)際業(yè)務(wù)處理過(guò)程(例如數(shù)據(jù)查詢或api接口調(diào)用等);在此處理過(guò)程中,調(diào)用日志組件,記錄操作日志和運(yùn)行日志;(11)完成業(yè)務(wù)處理后,進(jìn)入cookie安全處理組件;(12)最終響應(yīng)用戶請(qǐng)求。
圖3則給出了個(gè)性化安全需求的動(dòng)態(tài)解析及校驗(yàn)處理流程;app的使用者向頁(yè)面發(fā)出請(qǐng)求;安全模塊接收頁(yè)面?zhèn)鬏數(shù)男畔?,并?duì)其進(jìn)行安全檢查;如果通過(guò)檢查則由app執(zhí)行引擎處理尋找請(qǐng)求與安全配置信息間的關(guān)聯(lián)性;將對(duì)應(yīng)的安全配置信息發(fā)送至存儲(chǔ)介質(zhì);由app執(zhí)行引擎解析安全處理類型;動(dòng)態(tài)執(zhí)行安全檢查;通過(guò)驗(yàn)證后,調(diào)用ui運(yùn)行期執(zhí)行業(yè)務(wù);返回響應(yīng)結(jié)果并在頁(yè)面顯示。