本發(fā)明涉及防御跨站腳本攻擊,具體地說,涉及一種基于頁(yè)面重建技術(shù)的xss攻擊防御方法、系統(tǒng)、設(shè)備及介質(zhì)。
背景技術(shù):
1、現(xiàn)有的防御手段主要包括:
2、1、基于攻擊特征的攔截,常見于防火墻或waf,用請(qǐng)求參數(shù)匹配特定的xss腳本特征庫(kù)來判定是否xss攻擊并進(jìn)行阻斷;
3、2、基于語法語義的xss攔截,常見于waf,通過檢查請(qǐng)求參數(shù)是否符合js語法和形成攻擊語義來判定是否為xss攻擊并進(jìn)行阻斷;
4、3、代碼優(yōu)化及通過前端和后端代碼優(yōu)化,權(quán)限控制來較少xss漏洞;
5、基于攻擊特征的攔截技術(shù)常見于傳統(tǒng)防火墻和waf,由于js語言是高度動(dòng)態(tài)化的,通過傳統(tǒng)的正則表達(dá)式匹配不可能完全列舉出可能的攻擊腳本,其對(duì)xss攻擊的檢測(cè)能力較為有限。
6、基于語法語義的攔截技術(shù)常見于下一代waf,相對(duì)于攻擊特征檢測(cè)技術(shù),語法語義能更準(zhǔn)確地檢測(cè)各種js的變體,http請(qǐng)求常使用各種編碼技術(shù)來發(fā)送,如urlencode,base64等,基于語法語義的攔截技術(shù)無法有效的處理編碼后的攻擊。
7、需要說明的是,上述兩類攔截技術(shù)都無法應(yīng)對(duì)基于dom的xss攻擊,這是因?yàn)榛赿om的xss攻擊并不會(huì)將攻擊特征發(fā)送至web服務(wù)器,攻擊直接在瀏覽器端執(zhí)行。
8、代碼優(yōu)化及使用較新的前后端框架能減少xss漏洞,但無法完全杜絕此類攻擊。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明針對(duì)現(xiàn)有的防御方法無法攔截基于dom的xss攻擊的問題,提出一種基于頁(yè)面重建技術(shù)的xss攻擊防御方法、系統(tǒng)、設(shè)備及介質(zhì);在web服務(wù)器和瀏覽器之間部署代理,模擬web服務(wù)器返回的html頁(yè)面,并將執(zhí)行結(jié)果重繪為純靜態(tài)http頁(yè)面,通過websocket發(fā)送給代理,以實(shí)現(xiàn)代理中的虛擬頁(yè)面與用戶瀏覽器頁(yè)面的事件同步,避免了任何可能的xss攻擊。
2、本發(fā)明具體實(shí)現(xiàn)內(nèi)容如下:
3、一種基于頁(yè)面重建技術(shù)的xss攻擊防御方法,在web服務(wù)器與瀏覽器之間的網(wǎng)絡(luò)鏈路上部署http代理組件,具體包括:
4、將從瀏覽器獲取的http請(qǐng)求轉(zhuǎn)發(fā)至http代理組件,并通過調(diào)度控制器將http請(qǐng)求轉(zhuǎn)發(fā)至web服務(wù)器;
5、根據(jù)從web服務(wù)器獲取的http響應(yīng),調(diào)用虛擬web引擎執(zhí)行從http代理組件獲取的html頁(yè)面和js頁(yè)面,并將執(zhí)行結(jié)果渲染為虛擬頁(yè)面;
6、監(jiān)控并記錄虛擬頁(yè)面的變更數(shù)據(jù),以websocket的方式將變更數(shù)據(jù)發(fā)送至瀏覽器;
7、將執(zhí)行結(jié)果重繪為純靜態(tài)http頁(yè)面,防御xss攻擊。
8、為了更好地實(shí)現(xiàn)本發(fā)明,進(jìn)一步地,所述監(jiān)控并記錄虛擬頁(yè)面的變更數(shù)據(jù)具體包括:
9、監(jiān)控并記錄虛擬頁(yè)面的變更數(shù)據(jù),若當(dāng)前虛擬頁(yè)面為新頁(yè)面,則記錄完整數(shù)據(jù);若當(dāng)前虛擬頁(yè)面為變更頁(yè)面,則記錄增量數(shù)據(jù),并調(diào)用調(diào)度控制器通過http代理組件以websocket的方式將增量數(shù)據(jù)發(fā)送至瀏覽器。
10、為了更好地實(shí)現(xiàn)本發(fā)明,進(jìn)一步地,所述將執(zhí)行結(jié)果重繪為純靜態(tài)http頁(yè)面,具體包括:
11、將新頁(yè)面重組為純靜態(tài)http頁(yè)面;所述純靜態(tài)頁(yè)面不包括原頁(yè)面的js腳本;
12、從變更頁(yè)面獲取增量數(shù)據(jù),生成http響應(yīng)并調(diào)用調(diào)度控制器通過http代理組件以websocket的方式發(fā)送至瀏覽器。
13、為了更好地實(shí)現(xiàn)本發(fā)明,進(jìn)一步地,所述基于頁(yè)面重建技術(shù)的xss攻擊防御方法還包括:
14、調(diào)用js腳本捕獲從瀏覽器獲取的硬件變更消息,并以websocket的方式發(fā)送至http代理組件;
15、調(diào)用調(diào)度控制器將硬件變更消息轉(zhuǎn)發(fā)至虛擬web引擎執(zhí)行硬件變更消息;
16、監(jiān)控并記錄虛擬頁(yè)面的變更數(shù)據(jù),并以websocket的方式發(fā)送至瀏覽器,完成虛擬瀏覽器與用戶端瀏覽器同步。
17、為了更好地實(shí)現(xiàn)本發(fā)明,進(jìn)一步地,所述硬件變更消息包括鍵盤變更消息、鍵盤變更消息、窗口變更消息。
18、基于上述的基于頁(yè)面重建技術(shù)的xss攻擊防御方法,為了更好地實(shí)現(xiàn)本發(fā)明,進(jìn)一步地,提出一種基于頁(yè)面重建技術(shù)的xss攻擊防御系統(tǒng),用于上述的基于頁(yè)面重建技術(shù)的xss攻擊防御方法;包括http代理組件、虛擬web引擎、虛擬頁(yè)面監(jiān)控模塊、調(diào)度控制器;
19、所述http代理組件,用于從瀏覽器接收http請(qǐng)求,并發(fā)送至web服務(wù)器;
20、所述虛擬web引擎,用于將從web服務(wù)器獲取的html頁(yè)面和js腳本在本地渲染為虛擬頁(yè)面,并執(zhí)行硬件變更消息;
21、所述虛擬頁(yè)面監(jiān)控模塊,部署在虛擬web引擎內(nèi),用于監(jiān)控并記錄虛擬頁(yè)面變化,攔截虛擬頁(yè)面產(chǎn)生的http請(qǐng)求;
22、所述調(diào)度控制器,用于調(diào)度虛擬web引擎,為每一個(gè)http請(qǐng)求創(chuàng)建相應(yīng)的虛擬頁(yè)面,分發(fā)硬件變更消息到相應(yīng)的虛擬頁(yè)面,并將虛擬頁(yè)面向產(chǎn)生的http請(qǐng)求轉(zhuǎn)發(fā)給http代理組件,最終由代理組件發(fā)送到web服務(wù)器。
23、為了更好地實(shí)現(xiàn)本發(fā)明,進(jìn)一步地,所述http代理組件包括http代理組件服務(wù)端、http代理組件客戶端;
24、所述http代理組件服務(wù)端,用于接收來自瀏覽器的http請(qǐng)求,同時(shí)接收來自瀏覽器的硬件變更消息;
25、所述http代理組件客戶端,用于發(fā)送http請(qǐng)求至web服務(wù)器,并從web服務(wù)器接收http響應(yīng)。
26、基于上述的基于頁(yè)面重建技術(shù)的xss攻擊防御方法,為了更好地實(shí)現(xiàn)本發(fā)明,進(jìn)一步地,提出一種電子設(shè)備,包括存儲(chǔ)器和處理器;所述存儲(chǔ)器上存儲(chǔ)有計(jì)算機(jī)程序;當(dāng)所述計(jì)算機(jī)程序在所述處理器上執(zhí)行時(shí),實(shí)現(xiàn)上述的基于頁(yè)面重建技術(shù)的xss攻擊防御方法。
27、基于上述的基于頁(yè)面重建技術(shù)的xss攻擊防御方法,為了更好地實(shí)現(xiàn)本發(fā)明,進(jìn)一步地,提出一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)指令;當(dāng)所述計(jì)算機(jī)指令在上述的電子設(shè)備上執(zhí)行時(shí),實(shí)現(xiàn)上述的基于頁(yè)面重建技術(shù)的xss攻擊防御方法。
28、本發(fā)明具有以下有益效果:
29、本發(fā)明通過內(nèi)置的虛擬web引擎來執(zhí)行服務(wù)器返回的html頁(yè)面,并將頁(yè)面渲染為靜態(tài)頁(yè)面,web服務(wù)器返回的可能存在漏洞的js腳本完全被從頁(yè)面中移除;存儲(chǔ)型,反射型和dom型xss攻擊都需要依賴于特定的js腳本執(zhí)行,在本發(fā)明的場(chǎng)景下攻擊將無法生效,防御了任何可能的xss攻擊。
1.一種基于頁(yè)面重建技術(shù)的xss攻擊防御方法,其特征在于,在web服務(wù)器與瀏覽器之間的網(wǎng)絡(luò)鏈路上部署http代理組件,具體包括:
2.根據(jù)權(quán)利要求1所述的一種基于頁(yè)面重建技術(shù)的xss攻擊防御方法,其特征在于,所述監(jiān)控并記錄虛擬頁(yè)面的變更數(shù)據(jù)具體包括:
3.根據(jù)權(quán)利要求2所述的一種基于頁(yè)面重建技術(shù)的xss攻擊防御方法,其特征在于,所述將執(zhí)行結(jié)果重繪為純靜態(tài)http頁(yè)面,具體包括:
4.根據(jù)權(quán)利要求1所述的一種基于頁(yè)面重建技術(shù)的xss攻擊防御方法,其特征在于,所述基于頁(yè)面重建技術(shù)的xss攻擊防御方法還包括:
5.根據(jù)權(quán)利要求4所述的一種基于頁(yè)面重建技術(shù)的xss攻擊防御方法,其特征在于,所述硬件變更消息包括鍵盤變更消息、鍵盤變更消息、窗口變更消息。
6.一種基于頁(yè)面重建技術(shù)的xss攻擊防御系統(tǒng),用于執(zhí)行如權(quán)利要求1所述的基于頁(yè)面重建技術(shù)的xss攻擊防御方法;其特征在于,包括http代理組件、虛擬web引擎、虛擬頁(yè)面監(jiān)控模塊、調(diào)度控制器;
7.根據(jù)權(quán)利要求6所述的基于頁(yè)面重建技術(shù)的xss攻擊防御系統(tǒng),其特征在于,所述http代理組件包括http代理組件服務(wù)端、http代理組件客戶端;
8.一種電子設(shè)備,其特征在于,包括存儲(chǔ)器和處理器;所述存儲(chǔ)器上存儲(chǔ)有計(jì)算機(jī)程序;當(dāng)所述計(jì)算機(jī)程序在所述處理器上執(zhí)行時(shí),實(shí)現(xiàn)如權(quán)利要求1-5任一項(xiàng)所述的基于頁(yè)面重建技術(shù)的xss攻擊防御方法。
9.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)指令;當(dāng)所述計(jì)算機(jī)指令在如權(quán)利要求7所述的電子設(shè)備上執(zhí)行時(shí),實(shí)現(xiàn)如權(quán)利要求1-5任一項(xiàng)所述的基于頁(yè)面重建技術(shù)的xss攻擊防御方法。