本發(fā)明涉及網(wǎng)站安全技術(shù)領(lǐng)域,具體涉及一種網(wǎng)站腳本攻擊的防御方法及防御系統(tǒng)。
背景技術(shù):
網(wǎng)站包括前端技術(shù)和后端技術(shù),前端技術(shù)因此前端技術(shù)一般分為前端設計和前端開發(fā),前端設計一般可以理解為網(wǎng)站的視覺設計,前端開發(fā)則是網(wǎng)站的前臺代碼實現(xiàn)。后端技術(shù)是指后臺程序,是與數(shù)據(jù)庫進行交互以處理相應的業(yè)務邏輯。現(xiàn)有技術(shù)中的防腳本攻擊都是針對后端進行的防御,但是卻沒有對前端進行的防腳本攻擊,但是很多網(wǎng)站用戶可以直接打開瀏覽器的控制臺,對網(wǎng)站的核心功能進行腳本攻擊,存在安全威脅。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的在于提供一種網(wǎng)站腳本攻擊的防御方法及防御系統(tǒng),對網(wǎng)站前端進行的腳本攻擊進行防御,有效保護網(wǎng)站的核心功能。
為達到以上目的,本發(fā)明采取的技術(shù)方案是:
一種網(wǎng)站腳本攻擊的防御方法,包括如下步驟:
S1:網(wǎng)站瀏覽器的頁面元素通過自身的事件函數(shù)與網(wǎng)站腳本綁定;
S2:頁面元素的事件函數(shù)被觸發(fā)時,在事件函數(shù)執(zhí)行的過程中從事件函數(shù)提取事件對象,且事件函數(shù)將事件對象傳遞給網(wǎng)站腳本;
S3:在網(wǎng)站腳本執(zhí)行的過程中,判斷事件對象是否具有有效的頁面坐標;若具有有效的頁面坐標,事件函數(shù)的觸發(fā)為用戶觸發(fā)行為,則繼續(xù)執(zhí)行網(wǎng)站腳本;若沒有頁面坐標,事件函數(shù)的觸發(fā)為腳本攻擊,停止執(zhí)行網(wǎng)站腳本。
在上述技術(shù)方案的基礎(chǔ)上,所述防御方法還包括將網(wǎng)站腳本函數(shù)的核心邏輯進行閉包封裝。
在上述技術(shù)方案的基礎(chǔ)上,所述核心邏輯為網(wǎng)站腳本內(nèi)的變量和函數(shù)。
在上述技術(shù)方案的基礎(chǔ)上,所述防御方法還包括對網(wǎng)站的代碼進行代碼混淆處理。
在上述技術(shù)方案的基礎(chǔ)上,所述代碼混淆處理包括將代碼中的變量名稱和函數(shù)名稱替換為無意義的名稱。
在上述技術(shù)方案的基礎(chǔ)上,所述代碼混淆處理包括對代碼的進行格式替換。
在上述技術(shù)方案的基礎(chǔ)上,所述代碼混淆處理包括對代碼的進行特殊字符轉(zhuǎn)換。
一種網(wǎng)站腳本攻擊的防御系統(tǒng),包括:
頁面坐標檢測模塊,當頁面元素的事件函數(shù)被觸發(fā)時,判斷事件對象是否具有有效的頁面坐標;
閉包封裝模塊,用于對網(wǎng)站腳本函數(shù)的核心邏輯進行閉包封裝;
代碼混淆處理模塊,用于對網(wǎng)站的代碼進行代碼混淆處理。
在上述技術(shù)方案的基礎(chǔ)上,所述核心邏輯為網(wǎng)站腳本內(nèi)的變量和函數(shù)。
在上述技術(shù)方案的基礎(chǔ)上,所述代碼混淆包括名稱替換、格式替換和特殊字符轉(zhuǎn)換。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點在于:
(1)本發(fā)明的一種網(wǎng)站腳本攻擊的防御方法通過判斷是否具有頁面坐標來判斷用戶操作還是惡意腳本攻擊,因為網(wǎng)絡用戶對于網(wǎng)站的操作都是合法的,惡意腳本的操作時不合法的,而惡意腳本操作觸發(fā)事件必然不具有頁面坐標,本發(fā)明能夠有效的保護針對網(wǎng)站前端的網(wǎng)站元素的惡意腳本攻擊。
(2)本發(fā)明中的一種網(wǎng)站腳本攻擊的防御方法還通過將網(wǎng)站腳本的核心邏輯進行閉包封裝和將網(wǎng)站腳本的代碼進行代碼混淆處理,將網(wǎng)站腳本的核心邏輯放入閉包中,惡意腳本訪問不到任何內(nèi)容,從而實現(xiàn)對核心邏輯的保護;而通過代碼混淆對網(wǎng)站代碼進行模糊處理,將網(wǎng)站代碼變成不可正常閱讀的內(nèi)容,但是仍可以被網(wǎng)站瀏覽器識別并執(zhí)行,通過重重保護,進一步提高了網(wǎng)站前端的安全性,降低服務器壓力。
附圖說明
圖1為本發(fā)明實施例的方法流程圖;
圖2為本發(fā)明實施例的系統(tǒng)框圖。
具體實施方式
以下結(jié)合附圖及實施例對本發(fā)明作進一步詳細說明。
參見圖1所示,本發(fā)明實施例提供一種網(wǎng)站腳本攻擊的防御方法,其特征在于,包括如下步驟:
S1:網(wǎng)站瀏覽器的頁面元素通過自身的事件函數(shù)與網(wǎng)站腳本綁定;
S2:頁面元素的事件函數(shù)被觸發(fā)時,事件函數(shù)開始執(zhí)行,且在事件函數(shù)執(zhí)行的過程中從事件函數(shù)提取事件對象,事件函數(shù)將事件對象傳遞給網(wǎng)站腳本;
S3:開始網(wǎng)站腳本執(zhí)行,在網(wǎng)站腳本執(zhí)行的過程中,判斷事件對象是否具有有效的頁面坐標;
S4:若事件對象具有有效的頁面坐標,事件函數(shù)的觸發(fā)為用戶觸發(fā)行為,則繼續(xù)執(zhí)行網(wǎng)站腳本;
S5:若事件對象沒有頁面坐標,事件函數(shù)的觸發(fā)為腳本攻擊,停止執(zhí)行網(wǎng)站腳本。
該防御方法還包括將網(wǎng)站腳本函數(shù)的核心邏輯進行閉包封裝,核心邏輯為網(wǎng)站腳本內(nèi)的變量和函數(shù)。網(wǎng)站腳本函數(shù)中的作用域分為:全局作用域和局部作用域,在全局作用域下,惡意腳本可以任意訪問全局變量和全局函數(shù),但是惡意腳本不能訪問局部作用域中的函數(shù)和變量,閉包就是局部作用域的實現(xiàn)方式,將網(wǎng)站腳本內(nèi)的變量和函數(shù)放入閉包中,惡意腳本不能訪問任何內(nèi)容,即可實現(xiàn)對核心邏輯的保護。
代碼混淆處理包括將代碼中的變量名稱和函數(shù)名稱替換為無意義的名稱、格式替換和特殊字符轉(zhuǎn)換。本實施例中名稱替換是將代碼的變量名稱無序化和函數(shù)名稱無序化;格式替換是將代碼的格式符去掉如縮進、換行,變成一行;特殊字符轉(zhuǎn)換是將中文轉(zhuǎn)成統(tǒng)一碼。
參見圖2所示,本實施還提供一種網(wǎng)站腳本攻擊的防御系統(tǒng),包括:
頁面坐標檢測模塊,當頁面元素的事件函數(shù)被觸發(fā)時,判斷事件對象是否具有有效的頁面坐標;
閉包封裝模塊,用于對網(wǎng)站腳本函數(shù)的核心邏輯進行閉包封裝其中,核心邏輯為網(wǎng)站腳本內(nèi)的變量和函數(shù);
代碼混淆處理模塊,用于對網(wǎng)站的代碼進行代碼混淆處理,其中代碼混淆是指名稱替換、格式替換和特殊字符轉(zhuǎn)換,名稱替換是將代碼的變量名稱無序化和函數(shù)名稱無序化;格式替換是將代碼的格式符去掉如縮進、換行,變成一行;特殊字符轉(zhuǎn)換是將中文轉(zhuǎn)成統(tǒng)一碼。
本發(fā)明不局限于上述實施方式,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也視為本發(fā)明的保護范圍之內(nèi)。本說明書中未作詳細描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的現(xiàn)有技術(shù)。