一種網(wǎng)站防護(hù)方法、系統(tǒng)及裝置制造方法
【專利摘要】本發(fā)明提供一種網(wǎng)站防護(hù)方法、系統(tǒng)及裝置,解決網(wǎng)站安全服務(wù)器無法有效保證應(yīng)用服務(wù)器安全的問題。該方法中網(wǎng)站安全服務(wù)器接收到客戶端發(fā)送的訪問應(yīng)用服務(wù)器的請求后,當(dāng)該請求中攜帶WEB容器的私有變量時(shí),根據(jù)自身保存的針對該應(yīng)用服務(wù)器保存的具有SET方法的每個(gè)WEB容器的私有變量進(jìn)行匹配,當(dāng)匹配成功時(shí),將該請求過濾,否則,將該請求發(fā)送到應(yīng)用服務(wù)器。由于本發(fā)明實(shí)施例中的網(wǎng)站安全服務(wù)器根據(jù)請求中是否攜帶WEB容器的私有變量,及本地針對該應(yīng)用服務(wù)器保存的具有SET方法的每個(gè)WEB容器的私有變量,從而確定是否過濾該請求,避免該請求中攜帶的WEB容器的私有變量執(zhí)行系統(tǒng)命令,有效的保證了應(yīng)用服務(wù)器的安全。
【專利說明】一種網(wǎng)站防護(hù)方法、系統(tǒng)及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)安全【技術(shù)領(lǐng)域】,尤其涉及一種網(wǎng)站防護(hù)方法、系統(tǒng)及裝置。
【背景技術(shù)】
[0002]Struts2是為了提高開發(fā)人員的工作效率,提出的一種全新的框架。但Struts2在提高開發(fā)人員工作效率的同時(shí),也帶來了很多的問題,這是因?yàn)镾truts2框架的底層是基于OGNL語言實(shí)現(xiàn)的,而OGNL語言本身可以調(diào)用Java靜態(tài)函數(shù)進(jìn)而執(zhí)行系統(tǒng)命令,從而為系統(tǒng)帶來不安全的隱患,另外,其他的框架也同樣存在安全隱患的問題。
[0003]用戶訪問應(yīng)用服務(wù)器的請求發(fā)送到網(wǎng)站安全服務(wù)器,網(wǎng)站安全服務(wù)器根據(jù)自身保存的過濾策略,過濾掉不安全的請求,將安全的請求發(fā)送到應(yīng)用服務(wù)器。網(wǎng)站安全服務(wù)器是保證應(yīng)用服務(wù)器安全的節(jié)點(diǎn),在網(wǎng)站安全服務(wù)器中需要部署相應(yīng)的安全策略,保證應(yīng)用服務(wù)器的安全。但是現(xiàn)有技術(shù)中網(wǎng)站安全服務(wù)器在接收到用戶發(fā)送的訪問應(yīng)用服務(wù)器的請求后,網(wǎng)站安全服務(wù)器無法有效過濾掉對存在安全隱患的調(diào)用請求,從而無法保證應(yīng)用服務(wù)器的安全。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實(shí)施例提供了一種網(wǎng)站防護(hù)方法、系統(tǒng)及裝置,解決現(xiàn)有技術(shù)中網(wǎng)站安全服務(wù)器無法有效過濾用戶發(fā)送的不安全的請求,無法有效保證應(yīng)用服務(wù)器安全的問題。
[0005]本發(fā)明實(shí)施例提供了一種網(wǎng)站防護(hù)方法,該方法包括:
[0006]網(wǎng)站安全服務(wù)器接收客戶端發(fā)送的訪問應(yīng)用服務(wù)器的請求;
[0007]判斷該請求中是否攜帶WEB容器的私有變量;
[0008]當(dāng)該請求中攜帶WEB容器的私有變量時(shí),將該WEB容器的私有變量與本地針對該應(yīng)用服務(wù)器保存的具有SET方法的每個(gè)WEB容器的私有變量進(jìn)行匹配;
[0009]當(dāng)匹配成功時(shí),將該請求過濾,否則,將該請求發(fā)送到所述應(yīng)用服務(wù)器。
[0010]較佳地,為了進(jìn)一步有效的保證應(yīng)用服務(wù)器的安全,所述判斷該請求中是否攜帶WEB容器的私有變量之前,所述方法還包括:
[0011]判斷所述請求是否是對OGNL的調(diào)用;
[0012]當(dāng)該請求是對OGNL的調(diào)用時(shí),根據(jù)本地保存的OGNL過濾庫,判斷該請求中是否包含該OGNL過濾庫中的特殊字符或命令對象;
[0013]當(dāng)該請求中包含該OGNL過濾庫中的特殊字符或命令對象時(shí),過濾該請求,否則,進(jìn)行后續(xù)步驟。
[0014]較佳地,為了進(jìn)一步有效的保證應(yīng)用服務(wù)器的安全,將該WEB容器的私有變量與本地針對該應(yīng)用服務(wù)器保存的具有SET方法的每個(gè)WEB容器的私有變量進(jìn)行匹配之前,所述方法還包括:
[0015]判斷該WEB容器的私有變量是否為字符串;
[0016]當(dāng)該WEB容器的私有變量非字符串時(shí),將該請求發(fā)送到所述應(yīng)用服務(wù)器,否則,進(jìn)行后續(xù)步驟。
[0017]本發(fā)明實(shí)施例提供了一種網(wǎng)站防護(hù)裝置,所述裝置包括:
[0018]接收模塊,用于接收客戶端發(fā)送的訪問應(yīng)用服務(wù)器的請求;
[0019]判斷模塊,用于判斷該請求中是否攜帶WEB容器的私有變量;
[0020]匹配模塊,用于當(dāng)判斷模塊判斷該請求中攜帶WEB容器的私有變量時(shí),將該WEB容器的私有變量與本地針對該應(yīng)用服務(wù)器保存的具有SET方法的每個(gè)WEB容器的私有變量進(jìn)行匹配;
[0021]處理模塊,用于當(dāng)匹配模塊匹配成功時(shí),將該請求過濾,否則,將該請求發(fā)送到所述應(yīng)用服務(wù)器。
[0022]較佳地,為了進(jìn)一步有效的保證應(yīng)用服務(wù)器的安全,所述判斷模塊,還用于判斷所述請求是否是對OGNL的調(diào)用;及當(dāng)該請求是對OGNL的調(diào)用時(shí),根據(jù)本地保存的OGNL過濾庫,判斷該請求中是否包含該OGNL過濾庫中的特殊字符或命令對象;
[0023]處理模塊,還用于當(dāng)判斷模塊判斷該請求中包含該OGNL過濾庫中的特殊字符或命令對象時(shí),過濾該請求,否則,返回判斷模塊進(jìn)行判斷請求中是否攜帶WEB容器的私有變量的操作。
[0024]較佳地,為了進(jìn)一步有效的保證應(yīng)用服務(wù)器的安全,所述判斷模塊,還用于判斷該WEB容器的私有變量是否為字符串;
[0025]所述處理模塊,還用于當(dāng)判斷模塊判斷該WEB容器的私有變量非字符串時(shí),將該請求發(fā)送到所述應(yīng)用服務(wù)器,否則,將該請求發(fā)送到匹配模塊進(jìn)行處理。
[0026]本發(fā)明實(shí)施例提供了 一種網(wǎng)站安全服務(wù)器,該網(wǎng)站安全服務(wù)器包括上述裝置。
[0027]本發(fā)明實(shí)施例提供了一種網(wǎng)站防護(hù)系統(tǒng),所述系統(tǒng)包括:客戶端、應(yīng)用服務(wù)器以及上述網(wǎng)站安全服務(wù)器。
[0028]本發(fā)明實(shí)施例提供了一種網(wǎng)站防護(hù)方法、系統(tǒng)及裝置,該方法中當(dāng)網(wǎng)站安全服務(wù)器接收到客戶端發(fā)送的訪問應(yīng)用服務(wù)器的請求后,判斷該請求中是否攜帶WEB容器的私有變量,當(dāng)該請求中攜帶WEB容器的私有變量時(shí),根據(jù)自身保存的針對該應(yīng)用服務(wù)器保存的具有SET方法的每個(gè)WEB容器的私有變量進(jìn)行匹配,當(dāng)匹配成功時(shí),將該請求過濾,否則,將該請求發(fā)送到應(yīng)用服務(wù)器。由于本發(fā)明實(shí)施例中的網(wǎng)站安全服務(wù)器根據(jù)請求中是否攜帶WEB容器的私有變量,及本地針對該應(yīng)用服務(wù)器保存的具有SET方法的每個(gè)WEB容器的私有變量,從而確定是否過濾該請求,避免該請求中攜帶的WEB容器的私有變量執(zhí)行系統(tǒng)命令,有效的保證了應(yīng)用服務(wù)器的安全。
【專利附圖】
【附圖說明】
[0029]圖1為本發(fā)明實(shí)施例提供的一種網(wǎng)站防護(hù)過程示意圖;
[0030]圖2為本發(fā)明實(shí)施例提供的服務(wù)器的邏輯架構(gòu)圖;
[0031]圖3為本發(fā)明實(shí)施例一提供的一種網(wǎng)站防護(hù)過程示意圖;
[0032]圖4為本發(fā)明實(shí)施例二提供的一種網(wǎng)站防護(hù)過程示意圖;
[0033]圖5為本發(fā)明實(shí)施例提供的一種網(wǎng)站防護(hù)裝置結(jié)構(gòu)示意圖;
[0034]圖6為本發(fā)明實(shí)施例提供的一種網(wǎng)站防護(hù)系統(tǒng)結(jié)構(gòu)示意圖?!揪唧w實(shí)施方式】
[0035]為了有效的保證應(yīng)用服務(wù)器的安全,本發(fā)明實(shí)施例了一種網(wǎng)站防護(hù)方法、系統(tǒng)及
>J-U ρ?α裝直。
[0036]下面結(jié)合說明書附圖,對本發(fā)明實(shí)施例進(jìn)行詳細(xì)說明。
[0037]圖1為本發(fā)明實(shí)施例提供的一種網(wǎng)站防護(hù)過程示意圖,該過程包括以下步驟:
[0038]SlOl:網(wǎng)站安全服務(wù)器接收客戶端發(fā)送的訪問應(yīng)用服務(wù)器的請求。
[0039]網(wǎng)站安全服務(wù)器是為了保證應(yīng)用服務(wù)器的安全設(shè)置的服務(wù)器,一臺網(wǎng)站安全服務(wù)器可以同時(shí)防護(hù)幾臺應(yīng)用服務(wù)器。用戶在訪問應(yīng)用服務(wù)器時(shí),通過客戶端將請求發(fā)送到網(wǎng)站安全服務(wù)器,在網(wǎng)站安全服務(wù)器端進(jìn)行過濾。用戶通過客戶端發(fā)送的訪問應(yīng)用服務(wù)器的請求可以是訪問網(wǎng)頁的請求,也可以是訪問應(yīng)用服務(wù)器的其他請求。
[0040]S102:判斷該請求中是否攜帶WEB容器的私有變量,當(dāng)判斷結(jié)果為是時(shí),進(jìn)行步驟S103,否則,進(jìn)行步驟S105。
[0041]在本發(fā)明實(shí)施例中為了保證應(yīng)用服務(wù)器的安全,當(dāng)接收到用戶發(fā)送的請求時(shí),判斷該請求中是否攜帶WEB容器的私有變量,從而確定是否過濾該請求。
[0042]S103:將該WEB容器的私有變量與本地針對該應(yīng)用服務(wù)器保存的具有SET方法的每個(gè)WEB容器的私有變量進(jìn)行匹配,在匹配成功時(shí),進(jìn)行步驟S104,否則,進(jìn)行步驟S105。
[0043]為了保證應(yīng)用服務(wù)器的安全,并且同時(shí)提高用戶的訪問體驗(yàn),針對每臺應(yīng)用服務(wù)器,分析該應(yīng)用服務(wù)器中的每個(gè)WEB容器的私有變量,確定每個(gè)WEB容器的私有變量是否具有SET方法,將具有SET方法的每個(gè)WEB容器的私有變量針對該應(yīng)用服務(wù)器保存到網(wǎng)絡(luò)安全服務(wù)器中,即在網(wǎng)絡(luò)安全服務(wù)器中針對每臺應(yīng)用服務(wù)器,保存有該應(yīng)用服務(wù)器具有SET方法的每個(gè)WEB容器的私有變量。當(dāng)網(wǎng)絡(luò)安全服務(wù)器確定用戶發(fā)送的請求中攜帶WEB容器的私有變量,可以根據(jù)自身針對每臺應(yīng)用服務(wù)器保存的具有SET方法的每個(gè)WEB容器的私有變量,對用戶發(fā)送的請求進(jìn)行過濾。
[0044]S104:確定該訪問請求不安全,將該訪問請求過濾。
[0045]S105:確定該訪問請求安全,將該訪問請求發(fā)送到應(yīng)用服務(wù)器。
[0046]網(wǎng)絡(luò)安全服務(wù)器根據(jù)用戶發(fā)送的請求中攜帶的WEB容器的私有變量,及自身針對該用戶訪問的應(yīng)用服務(wù)器保存的其具有SET方法的每個(gè)WEB容器的私有變量,當(dāng)該請求中攜帶的WEB容器的私有變量與該網(wǎng)絡(luò)安全服務(wù)器針對該應(yīng)用服務(wù)器保存的每個(gè)WEB容器的私有變量匹配并匹配成功時(shí),確定用戶訪問的該應(yīng)用服務(wù)器中針對該請求中攜帶的WEB容器的私有變量,具有SET方法,如果將該請求發(fā)送到應(yīng)用服務(wù)器,該請求將會執(zhí)行系統(tǒng)命令,為應(yīng)用服務(wù)器帶來安全隱患,為了保證應(yīng)用服務(wù)器的安全,網(wǎng)絡(luò)安全服務(wù)器將該請求過濾,即不將該請求發(fā)送到應(yīng)用服務(wù)器;當(dāng)該請求中未攜帶WEB容器的私有變量,或者雖然攜帶了 WEB容器的私有變量,但與該網(wǎng)絡(luò)安全服務(wù)器針對該應(yīng)用服務(wù)器保存的每個(gè)WEB容器的私有變量匹配不成功時(shí),確定該請求安全,將該請求發(fā)送到應(yīng)用服務(wù)器,由應(yīng)用服務(wù)器對該請求進(jìn)行處理。
[0047]由于本發(fā)明實(shí)施例中的網(wǎng)站安全服務(wù)器根據(jù)請求中是否攜帶WEB容器的私有變量,及本地針對該應(yīng)用服務(wù)器保存的具有SET方法的每個(gè)WEB容器的私有變量,從而確定是否過濾該請求,避免該請求中攜帶的WEB容器的私有變量執(zhí)行系統(tǒng)命令,有效的保證了應(yīng)用服務(wù)器的安全。[0048]圖2為本發(fā)明實(shí)施例提供的服務(wù)器的邏輯架構(gòu)圖,位于最底層的是服務(wù)器的操作系統(tǒng)(OS)層,服務(wù)器的操作系統(tǒng)可以是Linux、Windows或Unix,位于操作系統(tǒng)之上的是WEB容器,具體可以是Tomcat或Jboss,位于WEB容器之上的是Struts2框架或SpringMVC框架,位于框架之上開發(fā)人員進(jìn)行程序的開發(fā)。
[0049]現(xiàn)有WEB容器層存在漏洞,當(dāng)調(diào)用一些WEB容器的私有變量,并且當(dāng)該WEB容器的私有變量具有SET方式時(shí),即可執(zhí)行操作系統(tǒng)命令,為操作系統(tǒng)帶來不安全因素。
[0050]因此,在本發(fā)明實(shí)施例中針對每臺應(yīng)用服務(wù)器,通過分析每臺應(yīng)用服務(wù)器的代碼,確定每臺應(yīng)用服務(wù)器中具有SET方法的每個(gè)WEB容器的私有變量,并將該信息保存在網(wǎng)站安全服務(wù)器中。具體的在網(wǎng)站安全服務(wù)器中針對每臺應(yīng)用服務(wù)器保存有其具有SET方法的每個(gè)WEB容器的私有變量。
[0051]當(dāng)網(wǎng)站安全服務(wù)器接收到用戶發(fā)送的訪問應(yīng)用服務(wù)器的請求,并判斷該請求中攜帶WEB容器的私有變量時(shí),根據(jù)自身的保存的針對每臺應(yīng)用服務(wù)器保存的具有SET方法的每個(gè)WEB容器的私有變量,查找該應(yīng)用服務(wù)器對應(yīng)的每個(gè)WEB容器的私有變量,將該請求中的WEB容器的私有變量,與保存的針對該應(yīng)用服務(wù)器對應(yīng)的每個(gè)WEB容器的私有變量進(jìn)行匹配,當(dāng)匹配成功時(shí),說明在該應(yīng)用服務(wù)器中針對該WEB容器的私有變量具有SET方法,如果將該請求發(fā)送到該應(yīng)用服務(wù)器,當(dāng)為該應(yīng)用服務(wù)器帶來不安全因素,因此網(wǎng)絡(luò)安全服務(wù)器為了保證應(yīng)用服務(wù)器的安全,將該請求過濾;如果匹配不成功,說明在該應(yīng)用服務(wù)器中針對該WEB容器的私有變量不具有SET方法,即使將該請求發(fā)送到應(yīng)用服務(wù)器也不會為該應(yīng)用服務(wù)器帶來不安全因素,因此,網(wǎng)絡(luò)安全服務(wù)器將該請求發(fā)送到應(yīng)用服務(wù)器。
[0052]每臺應(yīng)用服務(wù)器中的每個(gè)WEB容器的私有變量是否具有SET方法,可能會隨著時(shí)間的變化而變化。為了進(jìn)一步有效的保證應(yīng)用服務(wù)器的安全,可以按照設(shè)定的時(shí)間間隔分析每臺應(yīng)用服務(wù)器中的每個(gè)WEB容器的私有變量,判斷每個(gè)WEB容器的私有變量是否具有SET方法,根據(jù)分析的結(jié)果,更新網(wǎng)絡(luò)安全服務(wù)器中針對每臺應(yīng)用服務(wù)器保存的具有SET方法的每個(gè)WEB容器的私有變量,即按照設(shè)定的時(shí)間間隔,對針對每臺應(yīng)用服務(wù)器保存的具有SET方法的WEB容器的私有變量進(jìn)行更新。
[0053]另外,在本發(fā)明實(shí)施例中為了進(jìn)一步保證應(yīng)用服務(wù)器的安全,當(dāng)網(wǎng)絡(luò)安全服務(wù)器接收到用戶發(fā)送的訪問應(yīng)用服務(wù)器的請求時(shí),在判斷該請求中是否攜帶WEB容器的私有變量之前,該方法還包括:
[0054]判斷所述請求是否是對OGNL的調(diào)用;
[0055]當(dāng)該請求是對OGNL的調(diào)用時(shí),根據(jù)本地保存的OGNL過濾庫,判斷該請求中是否包含該OGNL過濾庫中的特殊字符或命令對象;
[0056]當(dāng)該請求中包含該OGNL過濾庫中的特殊字符或命令對象時(shí),過濾該請求,否則,判斷該請求中是否攜帶WEB容器的私有變量。
[0057]由于通過OGNL語言本身可以調(diào)用Java靜態(tài)函數(shù)進(jìn)而執(zhí)行系統(tǒng)命令,從而為系統(tǒng)帶來不安全的隱患,因此在本發(fā)明實(shí)施例中為了進(jìn)一步保證應(yīng)用服務(wù)器的安全,當(dāng)接收到用戶發(fā)送的訪問應(yīng)用服務(wù)器的請求時(shí),判斷該請求是否是對OGNL的調(diào)用,并且根據(jù)本地保存的OGNL過濾庫中保存的信息,判斷是否將該請求過濾。
[0058]具體的,在OGNL過濾庫保存有一些特殊字符或命令對象,特殊字符可以包括:#、@和\,命令對象可以包括:#_memberAccess.al1wStaticMethodAcce ss、#context ["xwork.MethodAccessor.denyMethodExecution〃]和 #_memberAccess.excludeProperties。 網(wǎng)絡(luò)安全服務(wù)器接收到用戶發(fā)送的訪問應(yīng)用服務(wù)器的請求,判斷該請求是對OGNL的調(diào)用時(shí),根據(jù)自身保存的OGNL過濾庫,判斷該請求中攜帶特殊字符,例如該請求中攜帶特殊字符#時(shí),或者判斷該請求中攜帶命令對象#context [〃xwork.MethodAccessor.denyMethodExecution〃]時(shí),確定該請求不安全,過濾該請求。
[0059]網(wǎng)絡(luò)安全服務(wù)器接收到用戶訪問應(yīng)用服務(wù)器的請求后,判斷該請求是否是對OGNL的調(diào)用,當(dāng)該請求是對OGNL的調(diào)用時(shí),根據(jù)自身OGNL過濾庫中保存的特殊字符及命令對象,判斷是否過濾該請求。當(dāng)確定該請求雖然是對OGNL的調(diào)用,但是該請求中未攜帶OGNL過濾庫中的特殊字符及命令對象是,再繼續(xù)判斷該請求是否攜帶WEB容器的私有變量,進(jìn)一步判斷該請求是否安全,將經(jīng)過兩次判斷后確定為安全的請求發(fā)送到應(yīng)用服務(wù)器。
[0060]圖3為本發(fā)明實(shí)施例一提供的一種網(wǎng)站防護(hù)過程示意圖,該過程包括以下步驟:
[0061]S301:網(wǎng)站安全服務(wù)器接收客戶端發(fā)送的訪問應(yīng)用服務(wù)器的請求。
[0062]S302:判斷該請求是否是對OGNL的調(diào)用,當(dāng)判斷結(jié)果為是時(shí),進(jìn)行步驟S303,否貝丨J,進(jìn)行步驟S304。
[0063]S303:根據(jù)本地保存的OGNL過濾庫,判斷該請求中是否包含該OGNL過濾庫中的特殊字符或命令對象,當(dāng)判斷結(jié)果為是時(shí),進(jìn)行步驟S306,否則,進(jìn)行步驟S304。
[0064]S304:判斷該請求中是否攜帶WEB容器的私有變量,當(dāng)判斷結(jié)果為是時(shí),進(jìn)行步驟S305,否則,進(jìn)行步驟S307。
[0065]S305:將該WEB容器的私有變量與本地針對該應(yīng)用服務(wù)器保存的具有SET方法的每個(gè)WEB容器的私有變量進(jìn)行匹配,在匹配成功時(shí),進(jìn)行步驟S306,否則,進(jìn)行步驟S307。
[0066]S306:確定該訪問請求不安全,將該訪問請求過濾。
[0067]S307:確定該訪問請求安全,將該訪問請求發(fā)送到應(yīng)用服務(wù)器。
[0068]在本發(fā)明的上述實(shí)施例中,網(wǎng)絡(luò)安全服務(wù)器接收到用戶發(fā)送的訪問應(yīng)用服務(wù)器的請求后,為了保證應(yīng)用服務(wù)器的安全,網(wǎng)絡(luò)安全服務(wù)器首先判斷該請求是否是對OGNL的調(diào)用,并且為了進(jìn)一步保證應(yīng)用服務(wù)器的安全,網(wǎng)絡(luò)服務(wù)器繼續(xù)判斷該請求中是否攜帶WEB容器的私有變量,通過上述兩次的判斷,可以有效的過濾不安全的請求,保證應(yīng)用服務(wù)器的安全。
[0069]當(dāng)WEB容器的私有變量具有SET方法,并且該WEB容器的私有變量為字符串時(shí)其會執(zhí)行系統(tǒng)命令,當(dāng)該WEB容器的私有變量非字符串時(shí),該WEB容器的私有變量也不會執(zhí)行系統(tǒng)命令。
[0070]因此,在本發(fā)明實(shí)施例中為了有效的保證應(yīng)用服務(wù)器的安全,將該WEB容器的私有變量與本地針對該應(yīng)用服務(wù)器保存的具有SET方法的每個(gè)WEB容器的私有變量進(jìn)行匹配之前,所述方法還包括:
[0071]判斷該WEB容器的私有變量是否為字符串;
[0072]當(dāng)該WEB容器的私有變量非字符串時(shí),將該請求發(fā)送到所述應(yīng)用服務(wù)器,否則,將該WEB容器的私有變量與本地針對該應(yīng)用服務(wù)器保存的具有SET方法的每個(gè)WEB容器的私有變量進(jìn)行匹配。
[0073]圖4為本發(fā)明實(shí)施例二提供的一種網(wǎng)絡(luò)防護(hù)過程示意圖,該過程包括以下步驟:
[0074]S401:網(wǎng)站安全服務(wù)器接收客戶端發(fā)送的訪問應(yīng)用服務(wù)器的請求。[0075]S402:判斷該請求是否是對OGNL的調(diào)用,當(dāng)判斷結(jié)果為是時(shí),進(jìn)行步驟S403,否貝丨J,進(jìn)行步驟S404。
[0076]S403:根據(jù)本地保存的OGNL過濾庫,判斷該請求中是否包含該OGNL過濾庫中的特殊字符或命令對象,當(dāng)判斷結(jié)果為是時(shí),進(jìn)行步驟S407,否則,進(jìn)行步驟S404。
[0077]S404:判斷該請求中是否攜帶WEB容器的私有變量,當(dāng)判斷結(jié)果為是時(shí),進(jìn)行步驟S405,否則,進(jìn)行步驟S408。
[0078]S405:判斷該WEB容器的私有變量是否為字符串,當(dāng)判斷結(jié)果為是時(shí),進(jìn)行步驟S406,否則,進(jìn)行步驟S408。
[0079]S406:將該WEB容器的私有變量與本地針對該應(yīng)用服務(wù)器保存的具有SET方法的每個(gè)WEB容器的私有變量進(jìn)行匹配,在匹配成功時(shí),進(jìn)行步驟S407,否則,進(jìn)行步驟S408。
[0080]S407:確定該訪問請求不安全,將該訪問請求過濾。
[0081]S408:確定該訪問請求安全,將該訪問請求發(fā)送到應(yīng)用服務(wù)器。
[0082]由于本發(fā)明實(shí)施例中的網(wǎng)站安全服務(wù)器根據(jù)請求中是否攜帶WEB容器的私有變量,及本地針對該應(yīng)用服務(wù)器保存的具有SET方法的每個(gè)WEB容器的私有變量,從而確定是否過濾該請求,避免該請求中攜帶的WEB容器的私有變量執(zhí)行系統(tǒng)命令,有效的保證了應(yīng)用服務(wù)器的安全。
[0083]下面結(jié)合一個(gè)具體實(shí)施例,對本發(fā)明實(shí)施例進(jìn)行詳細(xì)說明。
[0084]網(wǎng)絡(luò)安全服務(wù)器接 收到用戶發(fā)送的訪問第一應(yīng)用服務(wù)器的請求http://WWW.test, com/test, actiom ?提交的參數(shù)為 jav.classlouder.jarapath= (OGNL),當(dāng)網(wǎng)站安全服務(wù)器接收到該請求后,判斷該請求是對OGNL的調(diào)用,并且根據(jù)本地保存的OGNL過濾庫,該請求中不包含OGNL過濾庫中的特殊字符或命令對象,由于該請求中攜帶WEB容器的私有變量jav.classlouder.jarapath,判斷該WEB容器的私有變量為字符串,且網(wǎng)絡(luò)安全服務(wù)器的本地針對第一應(yīng)用服務(wù)器保存有該WEB容器的私有變量,因此可以確定該請求不安全,網(wǎng)絡(luò)安全服務(wù)器將該請求過濾。
[0085]圖5為本發(fā)明實(shí)施例提供的一種網(wǎng)站防護(hù)裝置結(jié)構(gòu)示意圖,所述裝置包括:
[0086]接收模塊51,用于接收客戶端發(fā)送的訪問應(yīng)用服務(wù)器的請求;
[0087]判斷模塊52,用于判斷該請求中是否攜帶WEB容器的私有變量;
[0088]匹配模塊53,用于當(dāng)判斷模塊判斷該請求中攜帶WEB容器的私有變量時(shí),將該WEB容器的私有變量與本地針對該應(yīng)用服務(wù)器保存的具有SET方法的每個(gè)WEB容器的私有變量進(jìn)行匹配;
[0089]處理模塊54,用于當(dāng)匹配模塊匹配成功時(shí),將該請求過濾,否則,將該請求發(fā)送到所述應(yīng)用服務(wù)器。
[0090]所述判斷模塊52,還用于判斷所述請求是否是對OGNL的調(diào)用;及當(dāng)該請求是對OGNL的調(diào)用時(shí),根據(jù)本地保存的OGNL過濾庫,判斷該請求中是否包含該OGNL過濾庫中的特殊字符或命令對象;
[0091]所述處理模塊54,還用于當(dāng)判斷模塊判斷該請求中包含該OGNL過濾庫中的特殊字符或命令對象時(shí),過濾該請求,否則,返回判斷模塊進(jìn)行判斷請求中是否攜帶WEB容器的私有變量的操作。
[0092]所述判斷模塊52,還用于判斷該WEB容器的私有變量是否為字符串;[0093]所述處理模塊54,還用于當(dāng)判斷模塊判斷該WEB容器的私有變量非字符串時(shí),將該請求發(fā)送到所述應(yīng)用服務(wù)器,否則,將該請求發(fā)送到匹配模塊進(jìn)行處理。
[0094]本發(fā)明實(shí)施例提供了 一種網(wǎng)站安全服務(wù)器,該服務(wù)器包括上述裝置。
[0095]圖6為本發(fā)明實(shí)施例提供的一種網(wǎng)站防護(hù)系統(tǒng),所述系統(tǒng)包括:客戶端61、應(yīng)用服務(wù)器63以及上述網(wǎng)站安全服務(wù)器62。
[0096]本發(fā)明實(shí)施例提供了一種網(wǎng)站防護(hù)方法、系統(tǒng)及裝置,該方法中當(dāng)網(wǎng)站安全服務(wù)器接收到客戶端發(fā)送的訪問應(yīng)用服務(wù)器的請求后,判斷該請求中是否攜帶WEB容器的私有變量,當(dāng)該請求中攜帶WEB容器的私有變量時(shí),根據(jù)自身保存的針對該應(yīng)用服務(wù)器保存的具有SET方法的每個(gè)WEB容器的私有變量進(jìn)行匹配,當(dāng)匹配成功時(shí),將該請求過濾,否則,將該請求發(fā)送到應(yīng)用服務(wù)器。由于本發(fā)明實(shí)施例中的網(wǎng)站安全服務(wù)器根據(jù)請求中是否攜帶WEB容器的私有變量,及本地針對該應(yīng)用服務(wù)器保存的具有SET方法的每個(gè)WEB容器的私有變量,從而確定是否過濾該請求,避免該請求中攜帶的WEB容器的私有變量執(zhí)行系統(tǒng)命令,有效的保證了應(yīng)用服務(wù)器的安全。
[0097]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本申請可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
[0098]本申請是參照根據(jù)本申請實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
[0099]這些計(jì)算機(jī)程序指令也可存儲在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲器中,使得存儲在該計(jì)算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
[0100]這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
[0101]盡管已描述了本申請的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實(shí)施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本申請范圍的所有變更和修改。
[0102]顯然,本領(lǐng)域的技術(shù)人員可以對本申請進(jìn)行各種改動(dòng)和變型而不脫離本申請的精神和范圍。這樣,倘若本申請的這些修改和變型屬于本申請權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請也意圖包含這些改動(dòng)和變型在內(nèi)。
【權(quán)利要求】
1.一種網(wǎng)站防護(hù)方法,其特征在于,該方法包括: 網(wǎng)站安全服務(wù)器接收客戶端發(fā)送的訪問應(yīng)用服務(wù)器的請求; 判斷該請求中是否攜帶WEB容器的私有變量; 當(dāng)該請求中攜帶WEB容器的私有變量時(shí),將該WEB容器的私有變量與本地針對該應(yīng)用服務(wù)器保存的具有SET方法的每個(gè)WEB容器的私有變量進(jìn)行匹配; 當(dāng)匹配成功時(shí),將該請求過濾,否則,將該請求發(fā)送到所述應(yīng)用服務(wù)器。
2.如權(quán)利要求1所述的方法,其特征在于,所述判斷該請求中是否攜帶WEB容器的私有變量之前,所述方法還包括: 判斷所述請求是否是對OGNL的調(diào)用; 當(dāng)該請求是對OGNL的調(diào)用時(shí),根據(jù)本地保存的OGNL過濾庫,判斷該請求中是否包含該OGNL過濾庫中的特殊字符或命令對象; 當(dāng)該請求中包含該OGNL過濾庫中的特殊字符或命令對象時(shí),過濾該請求,否則,進(jìn)行后續(xù)步驟。
3.如權(quán)利要求2所述的方法,其特征在于,所述OGNL過濾庫中包含的特殊字符為#、@和\。
4.如權(quán)利要求1或2所述的方法,其特征在于,將該WEB容器的私有變量與本地針對該應(yīng)用服務(wù)器保存的具有SET方法的每個(gè)WEB容器的私有變量進(jìn)行匹配之前,所述方法還包括: 判斷該WEB容器的私有變量是否為字符串; 當(dāng)該WEB容器的私有變量非字符串時(shí),將該請求發(fā)送到所述應(yīng)用服務(wù)器,否則,進(jìn)行后續(xù)步驟。
5.如權(quán)利要求1所述的方法,其特征在于,所述WEB容器的私有變量包括: Tomcat內(nèi)置私有變量和Jboss內(nèi)置私有變量。
6.一種網(wǎng)站防護(hù)裝置,其特征在于,所述裝置包括: 接收模塊,用于接收客戶端發(fā)送的訪問應(yīng)用服務(wù)器的請求; 判斷模塊,用于判斷該請求中是否攜帶WEB容器的私有變量; 匹配模塊,用于當(dāng)判斷模塊判斷該請求中攜帶WEB容器的私有變量時(shí),將該WEB容器的私有變量與本地針對該應(yīng)用服務(wù)器保存的具有SET方法的每個(gè)WEB容器的私有變量進(jìn)行匹配; 處理模塊,用于當(dāng)匹配模塊匹配成功時(shí),將該請求過濾,否則,將該請求發(fā)送到所述應(yīng)用服務(wù)器。
7.如權(quán)利要求6所述的方法,其特征在于,所述判斷模塊,還用于判斷所述請求是否是對OGNL的調(diào)用;及當(dāng)該請求是對OGNL的調(diào)用時(shí),根據(jù)本地保存的OGNL過濾庫,判斷該請求中是否包含該OGNL過濾庫中的特殊字符或命令對象; 處理模塊,還用于當(dāng)判斷模塊判斷該請求中包含該OGNL過濾庫中的特殊字符或命令對象時(shí),過濾該請求,否則,返回判斷模塊進(jìn)行判斷請求中是否攜帶WEB容器的私有變量的操作。
8.如權(quán)利要求6或7所述的方法,其特征在于,所述判斷模塊,還用于判斷該WEB容器的私有變量是否為字符串;所述處理模塊,還用于當(dāng)判斷模塊判斷該WEB容器的私有變量非字符串時(shí),將該請求發(fā)送到所述應(yīng)用服務(wù)器,否則,將該請求發(fā)送到匹配模塊進(jìn)行處理。
9.一種網(wǎng)站安全服務(wù)器,其特征在于,包括權(quán)利要求6~8任一所述的裝置。
10.一種網(wǎng)站防護(hù)系統(tǒng),其特征在于,所述系統(tǒng)包括:客戶端、應(yīng)用服務(wù)器以及權(quán)利要求9所述的網(wǎng)站安全服務(wù)器。
【文檔編號】G06F17/30GK103618734SQ201310659048
【公開日】2014年3月5日 申請日期:2013年12月6日 優(yōu)先權(quán)日:2013年12月6日
【發(fā)明者】蘇洵 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司