本發(fā)明屬于網(wǎng)絡防護技術領域,特別涉及一種實現(xiàn)關鍵字對匹配的系統(tǒng)及方法。
背景技術:
常見的網(wǎng)絡攻擊方式是在命令中帶有特定的攻擊代碼?,F(xiàn)有算法實現(xiàn)的基本原理是把經(jīng)過處理的數(shù)據(jù)包(“文本”)和定義好的規(guī)則相匹配,來搜索判斷是否有入侵發(fā)生。匹配的方式為一次性匹配所有規(guī)則(單個關鍵字匹配)。
現(xiàn)有的規(guī)則匹配方式是一次性匹配所有規(guī)則(單個關鍵字匹配),無法實現(xiàn)關鍵字對(多個關鍵字)匹配,有待改進。
技術實現(xiàn)要素:
本發(fā)明的目的,在于提供一種實現(xiàn)關鍵字對匹配的系統(tǒng)及方法,其可實現(xiàn)多個關鍵字匹配。
為了達成上述目的,本發(fā)明的解決方案是:
一種實現(xiàn)關鍵字對匹配的系統(tǒng),包括:
數(shù)據(jù)采集模塊,用于從web服務器獲取關鍵字對規(guī)則;以及,
數(shù)據(jù)分析模塊,用于將數(shù)據(jù)包與規(guī)則進行匹配,返回結果集,根據(jù)結果集分析是否匹配觸發(fā)。
一種實現(xiàn)關鍵字對匹配的方法,包括如下步驟:
步驟1,web服務器獲取定義好的關鍵字對形式的規(guī)則,并存入數(shù)據(jù)庫中;
步驟2,將步驟1中關鍵字對形式的規(guī)則拆分為單個關鍵字與間距,其中,間距表示兩個關鍵字間的字符數(shù);
步驟3,將數(shù)據(jù)包內(nèi)容逐詞與單個關鍵字進行匹配,根據(jù)高位運算判斷數(shù)據(jù)包內(nèi)容是否為漢字,得到匹配到的關鍵字末端在文本中所處的字符數(shù)byteNum,以及關鍵字在文本中所在的位置index,將結果保存到結果集;
步驟4,根據(jù)最近一次匹配到的關鍵字的位置byteNum1,以及遍歷中匹配到的關鍵字的位置byteNum2,得到distance=byteNum1-byteNum2+byteNum,判斷distance是否在定義的規(guī)則的間距范圍內(nèi),若是則表示匹配觸發(fā),上報結果,否則返回步驟3。
上述步驟3中,在逐詞匹配過程中,判斷最近一次匹配得到的關鍵字是否屬于子規(guī)則集合中,若是則遍歷之前匹配到的關鍵字組,判斷子規(guī)則集合中的另外一個關鍵字是否存在于遍歷得到的關鍵字組中,轉步驟4,否則返回步驟3。
上述步驟3中,高位運算的具體過程是:
(1)字符數(shù)byteNum自增1;
(2)判斷是否高位,如果不是高位則返回步驟(1);如果是高位,設置num值自增1,進一步判斷下一位是否為高位,如果下一位不是高位,num值置0,如果下一位是高位,判斷是否連續(xù)三個為高位,是的話為漢字,byteNum值不變,否則byteNum-1處理,表示還在判斷是否為漢字;
(3)返回步驟(1),繼續(xù)判斷。
采用上述方案后,本發(fā)明具有如下特點:
(1)解決多個關鍵字搜索匹配問題;
(2)解決在指定間距范圍內(nèi)關鍵字對的匹配;
(3)提出了符合數(shù)字/英文字母/中文/常見符號等字符為一個間距單位的算法補充;
(4)單個關鍵字(子規(guī)則)在文本中出現(xiàn)的位置前后不影響匹配結果。
附圖說明
圖1是本發(fā)明的流程圖;
圖2是本發(fā)明中高位運算的流程圖。
具體實施方式
以下將結合附圖,對本發(fā)明的技術方案及有益效果進行詳細說明。
本發(fā)明提供一種實現(xiàn)關鍵字對匹配的系統(tǒng),包括:
數(shù)據(jù)采集模塊,用于從web服務器獲取關鍵字對規(guī)則;
數(shù)據(jù)分析模塊,用于將數(shù)據(jù)包(文本)與規(guī)則進行匹配,返回結果集,根據(jù)結果集分析是否入侵(關鍵字匹配觸發(fā))。
如圖1所示,本發(fā)明提供一種實現(xiàn)關鍵字對匹配的方法,包括如下步驟:
步驟1,web服務器獲取定義好的關鍵字對形式的規(guī)則,并存入數(shù)據(jù)庫中,其中,所述規(guī)則是策略中已經(jīng)配置好的;
步驟2,將步驟1中關鍵字對形式的規(guī)則拆分為單個關鍵字(子規(guī)則)與間距,例如將”關鍵字1-關鍵字2-間距”拆分為”關鍵字1”,”關鍵字2”,”間距”,其中,間距表示兩個關鍵字間的字符數(shù);
步驟3,將數(shù)據(jù)包(文本)內(nèi)容逐詞與單個關鍵字(子規(guī)則)進行匹配,根據(jù)高位運算判斷數(shù)據(jù)包(文本)內(nèi)容是否為漢字,得到匹配到的關鍵字末端在文本中所處的字符數(shù)(byteNum),以及關鍵字在文本中所在的位置(index),將結果保存到結果集;
步驟4,在逐詞匹配過程中,判斷最近一次匹配得到的關鍵字是否屬于子規(guī)則集合中,若是則遍歷之前匹配到的關鍵字組,判斷子規(guī)則集合中的另外一個關鍵字是否存在于遍歷得到的關鍵字組中,轉步驟5,否則返回步驟3繼續(xù)匹配;
步驟5,引入間距處理:根據(jù)最近一次匹配到的關鍵字的位置(byteNum1),以及遍歷中匹配到的關鍵字的位置(byteNum2),得到distance=byteNum1-byteNum2+byteNum,判斷distance是否在定義的規(guī)則的間距范圍內(nèi),其中byteNum為文本中后匹配到的關鍵字本身長度(長度計算方法也是根據(jù)高位運算判斷是否為漢字,從而進行累計計數(shù)),若是則表示匹配觸發(fā),上報結果,否則返回步驟3。
配合圖2所示,是本發(fā)明中高位運算的流程圖,包括如下步驟:
(1)字符數(shù)byteNum自增1。
(2)判斷是否高位,如果不是高位則返回步驟(1);如果是高位,設置num值自增1(在后面判斷是否連續(xù)3個為高位),進一步判斷下一位是否為高位。如果下一位不是高位,num值置0,如果下一位是高位,判斷是否連續(xù)三個為高位,是的話為漢字,byteNum值不變,否則byteNum-1處理,表示還在判斷是否為漢字。
(3)返回步驟(1),繼續(xù)判斷。
綜合上述,本發(fā)明一種實現(xiàn)關鍵字對匹配的系統(tǒng)及方法,與現(xiàn)有方案相比有如下改進:
(1)現(xiàn)有方案只能匹配單個關鍵字,需要對這樣的數(shù)據(jù)判斷是否存在于關鍵字對的子規(guī)則(單個關鍵字)集里,同時判斷其他子規(guī)則存在于遍歷得到的歷史匹配關鍵字組中,本發(fā)明獲取到web的關鍵字對(如“key1-key2-distance”),在現(xiàn)有的基礎上匹配到多個關鍵字;
(2)現(xiàn)有方案沒有關鍵字間距的概念,本發(fā)明引入匹配到的關鍵字末端在數(shù)據(jù)包(文本)所處字符數(shù),根據(jù)高位運算判斷是否為漢字,彌補現(xiàn)有方案中無法智能識別漢字間距計數(shù)為1的不足。引入間距概念,實現(xiàn)在指定間距范圍內(nèi)是否存在匹配到多個關鍵字的判斷。
以上實施例僅為說明本發(fā)明的技術思想,不能以此限定本發(fā)明的保護范圍,凡是按照本發(fā)明提出的技術思想,在技術方案基礎上所做的任何改動,均落入本發(fā)明保護范圍之內(nèi)。