亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種新型正則表達(dá)式調(diào)用接口實(shí)現(xiàn)方式的制作方法

文檔序號(hào):8512708閱讀:441來源:國(guó)知局
一種新型正則表達(dá)式調(diào)用接口實(shí)現(xiàn)方式的制作方法【
技術(shù)領(lǐng)域
】[0001]本發(fā)明涉及一種新型正則表達(dá)式調(diào)用接口實(shí)現(xiàn)方式。【
背景技術(shù)
】[0002]隨著互聯(lián)網(wǎng)應(yīng)用的普及,網(wǎng)絡(luò)安全的形式越來越嚴(yán)峻,各種防御性的網(wǎng)絡(luò)安全產(chǎn)品也越來越多,正則表達(dá)式具有較高的靈活性,因此網(wǎng)絡(luò)安全產(chǎn)品中對(duì)攻擊信息的判斷一般采用正則表達(dá)式的方式檢測(cè)。比如采用第三方開源的pcre庫(kù)等。但是這些庫(kù)的接口不能在匹配的過程中介入,導(dǎo)致一些使用上的問題。[0003]一、在網(wǎng)絡(luò)安全產(chǎn)品越來越普及的同時(shí),黑客意識(shí)到常規(guī)的攻擊會(huì)被網(wǎng)絡(luò)安全產(chǎn)品防御住,因此為了突破這些網(wǎng)絡(luò)安全產(chǎn)品,在web攻擊時(shí)常常使用各種編碼進(jìn)行嘗試?yán)@過,比如URL、html編碼等,網(wǎng)絡(luò)安全產(chǎn)品也對(duì)各種編碼繞過進(jìn)行解碼處理。[0004]當(dāng)前網(wǎng)絡(luò)全產(chǎn)品的處理方案一般流程如下:接收攻擊的內(nèi)容,保存在緩存buffer中對(duì)攻擊的內(nèi)容解碼,保存在解碼后的緩存buffer2中使用正則對(duì)解碼后的緩存bufferf進(jìn)行匹配,匹配成功則說明有攻擊,記錄下攻擊匹配成功的攻擊字符串在buffer2中的位置在這種方案中,存在兩個(gè)冋題:1、對(duì)字符串增加了一次拷貝,如果攻擊串很多時(shí),這種拷貝是很耗費(fèi)時(shí)間的,也多占用了內(nèi)存2、在匹配成功后,只能定位到轉(zhuǎn)換后的位置,無法準(zhǔn)確定位轉(zhuǎn)換前的位置,從而導(dǎo)致不能準(zhǔn)確定位原始攻擊內(nèi)容二、對(duì)匹配到攻擊信息的匹配結(jié)果,保存在列表中,這個(gè)列表的長(zhǎng)度是調(diào)用正則的調(diào)用者傳入的,如果匹配結(jié)果超過了列表的長(zhǎng)度,則后面的匹配結(jié)果會(huì)丟棄,很容易造成攻擊繞過?!?br/>發(fā)明內(nèi)容】[0005]本發(fā)明的目的在于提供一種新型正則表達(dá)式調(diào)用接口實(shí)現(xiàn)方式,以解決現(xiàn)有技術(shù)上的字符串多次拷貝、不能準(zhǔn)確定位以及多個(gè)匹配結(jié)果的保存問題。[0006]為實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:一種新型正則表達(dá)式調(diào)用接口實(shí)現(xiàn)方式,其特征在于包括以下步驟:步驟S1:從字符串中的字符進(jìn)行逐個(gè)讀取;步驟S2:判斷是否已讀取所有字符,若是,則程序結(jié)束;否則調(diào)用解碼回調(diào)函數(shù)對(duì)讀取的字符進(jìn)行解碼;步驟S3:從字符串中消耗本次讀取的字符,并設(shè)置消耗的字符個(gè)數(shù)為下次讀取輸入字符串的偏移個(gè)數(shù);步驟S4:匹配解碼后的字符,并獲取下一個(gè)解碼后的字符的轉(zhuǎn)換狀態(tài);步驟S5:判斷是否匹配成功,若匹配成功,則調(diào)用匹配回調(diào)函數(shù)處理匹配結(jié)果,所述匹配結(jié)果為匹配的開始位置和結(jié)束位置;否則回到步驟SI讀取下一個(gè)字符;步驟S6:根據(jù)所述匹配回調(diào)函數(shù)的返回結(jié)果判斷是否繼續(xù),若返回繼續(xù),則返回到步驟SI讀取下一個(gè)字符;否則程序結(jié)束。[0007]本發(fā)明與現(xiàn)有技術(shù)相比具有以下有益效果:1、本發(fā)明減少了字符串拷貝,加快系統(tǒng)處理效率;2、本發(fā)明減少了系統(tǒng)的整體內(nèi)存占用;3、本發(fā)明能準(zhǔn)確定位匹配成功的位置在解碼前的原始串中的位置;4、本發(fā)明的匹配結(jié)果的保存不受限于預(yù)先分配的緩沖空間,可以在回調(diào)函數(shù)中無限擴(kuò)展或根據(jù)匹配規(guī)則的級(jí)別需要是否終止匹配。【附圖說明】[0008]圖1是現(xiàn)有的正則表達(dá)式的匹配流程圖。[0009]圖2是本發(fā)明流程圖?!揪唧w實(shí)施方式】[0010]下面結(jié)合附圖及實(shí)施例對(duì)本發(fā)明做進(jìn)一步說明。[0011]請(qǐng)參照?qǐng)D1,本發(fā)明提供一種新型正則表達(dá)式調(diào)用接口實(shí)現(xiàn)方式,其特征在于包括以下步驟:步驟S1:從字符串中的字符進(jìn)行逐個(gè)讀??;步驟S2:判斷是否已讀取所有字符,若是,則程序結(jié)束;否則調(diào)用解碼回調(diào)函數(shù)對(duì)讀取的字符進(jìn)行解碼;步驟S3:從字符串中消耗本次讀取的字符,并設(shè)置消耗的字符個(gè)數(shù)為下次讀取輸入字符串的偏移個(gè)數(shù);步驟S4:匹配解碼后的字符,并獲取下一個(gè)解碼后的字符的轉(zhuǎn)換狀態(tài);步驟S5:判斷是否匹配成功,若匹配成功,則調(diào)用匹配回調(diào)函數(shù)處理匹配結(jié)果,所述匹配結(jié)果為匹配的開始位置和結(jié)束位置;否則回到步驟SI讀取下一個(gè)字符;步驟S6:根據(jù)所述匹配回調(diào)函數(shù)的返回結(jié)果判斷是否繼續(xù),若返回繼續(xù),則返回到步驟SI讀取下一個(gè)字符;否則程序結(jié)束。[0012]為了讓一般技術(shù)人員更好的理解本發(fā)明的技術(shù)方案,以下結(jié)合實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)介紹。[0013]在web應(yīng)用防火墻WAF(WebApplicat1nFirewall)中,使用正則表達(dá)式來進(jìn)行匹配攻擊威脅。使用普通的正則表達(dá)式的方式進(jìn)行檢測(cè)時(shí),其結(jié)果存在本方案中描述的問題無法解決。[0014]假設(shè)WAF的正則中包含下面兩條規(guī)則:規(guī)則1001檢測(cè)輸入串是否包含’\d=\d,即檢測(cè)是否有SQL條件;規(guī)則1002測(cè)試輸入串是否包含select.*from。[0015]在攻擊時(shí)參數(shù)name的值為%27%20%6f%72%201=l%20un1n%20all%20select%20.*%20from%20all_tables—,即請(qǐng)求行類似如下:GET/?name=%27%20%6f%72%201=l%20un1n%20all%20select%20.*%20from%20all_tables—,通過解碼我們將發(fā)現(xiàn)這個(gè)串的內(nèi)容實(shí)質(zhì)為’or1=1un1nallselect*fromall_tables—,其中是包含了SQL注入攻擊信息的。那么在攻擊檢測(cè)的匹配過程中,普通的匹配方式如下:將%27%20%6f%72%201=l%20un1n%20all%20select%20.*%20from%20all_tables—解碼為一個(gè)新的串’or1=1un1nallselect*fromall_tables—,新的串采用新的緩沖保存;針對(duì)新串執(zhí)行正則表達(dá)式匹配;在匹配的過程中,假設(shè)只能保存一個(gè)匹配結(jié)果,那么只有規(guī)則1001被匹配,且記錄到的匹配的結(jié)束位置為8,即在轉(zhuǎn)換后串中的’or1=1,顯然在原始串中的位置不是這個(gè)。采用新的方案時(shí),匹配過程如下:循環(huán)讀?。?7%20%6f%72%201=l%20un1n%20all%20select%20.*%20from%20all_tables—,每次讀取一個(gè)字符,對(duì)每個(gè)字符串進(jìn)行解碼判斷,如果是%,那么進(jìn)行解碼,并消耗后面的兩個(gè)字符,比如%27,在讀取到%時(shí),解碼回調(diào)函數(shù)將執(zhí)行,并根據(jù)后面的27兩個(gè)數(shù)字解碼出“’”,同時(shí)也消耗了兩個(gè)字符,下次讀取字符時(shí),從27的后面開始讀取;對(duì)每個(gè)解碼后的字符判斷是否匹配到了規(guī)則,這里有兩種執(zhí)行路徑:1、如果沒有匹配到規(guī)則,則從步驟I開始繼續(xù)讀取字符;2、如果有匹配到規(guī)則,則調(diào)用匹配回調(diào)進(jìn)行記錄匹配的結(jié)果處理,本實(shí)施例中從最開始一直到1=1后面才會(huì)匹配到1001規(guī)則,此時(shí)將調(diào)用匹配回調(diào)函數(shù)記錄規(guī)則1001和匹配的結(jié)束位置為18,然后重新從步驟I開始執(zhí)行,在執(zhí)行到最后面的一后,將匹配到第二個(gè)規(guī)則1002,此時(shí)再次調(diào)用匹配回調(diào)函數(shù)記錄規(guī)則1002,匹配的結(jié)束位置為68。[0016]以上所述僅為本發(fā)明的較佳實(shí)施例,凡依本發(fā)明申請(qǐng)專利范圍所做的均等變化與修飾,皆應(yīng)屬本發(fā)明的涵蓋范圍。【主權(quán)項(xiàng)】1.一種新型正則表達(dá)式調(diào)用接口實(shí)現(xiàn)方式,其特征在于包括以下步驟:步驟S1:從字符串中的字符進(jìn)行逐個(gè)讀?。徊襟ES2:判斷是否已讀取所有字符,若是,則程序結(jié)束;否則調(diào)用解碼回調(diào)函數(shù)對(duì)讀取的字符進(jìn)行解碼;步驟S3:從字符串中消耗本次讀取的字符,并設(shè)置消耗的字符個(gè)數(shù)為下次讀取輸入字符串的偏移個(gè)數(shù);步驟S4:匹配解碼后的字符,并獲取下一個(gè)解碼后的字符的轉(zhuǎn)換狀態(tài);步驟S5:判斷是否匹配成功,若匹配成功,則調(diào)用匹配回調(diào)函數(shù)處理匹配結(jié)果,所述匹配結(jié)果為匹配的開始位置和結(jié)束位置;否則回到步驟SI讀取下一個(gè)字符;步驟S6:根據(jù)所述匹配回調(diào)函數(shù)的返回結(jié)果判斷是否繼續(xù),若返回繼續(xù),則返回到步驟SI讀取下一個(gè)字符;否則程序結(jié)束。【專利摘要】本發(fā)明涉及一種新型正則表達(dá)式調(diào)用接口實(shí)現(xiàn)方式,其特征在于包括以下步驟:從字符串中的字符進(jìn)行逐個(gè)讀取;判斷是否已讀取所有字符,若是,則程序結(jié)束,否則調(diào)用一解碼回調(diào)函數(shù)對(duì)讀取的字符進(jìn)行解碼;從字符串中消耗本次讀取的字符,并設(shè)置消耗的字符個(gè)數(shù)為下次讀取輸入字符串的偏移個(gè)數(shù);匹配解碼后的字符,并獲取下一個(gè)解碼后的字符的轉(zhuǎn)換狀態(tài);判斷是否匹配成功,若匹配成功,則調(diào)用匹配回調(diào)函數(shù)處理匹配結(jié)果,否則讀取下一個(gè)字符;根據(jù)所述匹配回調(diào)函數(shù)的返回結(jié)果判斷是否繼續(xù),若返回繼續(xù),則讀取下一個(gè)字符,否則程序結(jié)束。本發(fā)明解決了現(xiàn)有技術(shù)上的字符串多次拷貝、不能準(zhǔn)確定位以及多個(gè)匹配結(jié)果的保存問題。【IPC分類】G06F17-30,G06F21-55【公開號(hào)】CN104834856【申請(qǐng)?zhí)枴緾N201510234018【發(fā)明人】王琦,劉坤朋,張木連,楊大志【申請(qǐng)人】福建六壬網(wǎng)安股份有限公司【公開日】2015年8月12日【申請(qǐng)日】2015年5月11日
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1