欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種實(shí)現(xiàn)安全掃描的方法及分布式系統(tǒng)的制作方法

文檔序號(hào):7986899閱讀:314來源:國(guó)知局
一種實(shí)現(xiàn)安全掃描的方法及分布式系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種實(shí)現(xiàn)安全掃描的方法及分布式系統(tǒng),該方法包括:開始任務(wù)接口將生成的任務(wù)消息上傳到待爬取消息隊(duì)列;爬蟲進(jìn)程依據(jù)在所述待爬取消息隊(duì)列中監(jiān)聽到的任務(wù)消息中的待掃描任務(wù)入口URL,得到所述待掃描任務(wù)入口URL下的子鏈接,并發(fā)送掃描消息給待掃描消息隊(duì)列;掃描監(jiān)聽進(jìn)程在待掃描消息隊(duì)列監(jiān)聽到所述掃描消息時(shí),將所述子鏈接存儲(chǔ)到數(shù)據(jù)庫;web?server收到掃描進(jìn)程發(fā)送的http請(qǐng)求后,依據(jù)數(shù)據(jù)庫存儲(chǔ)的子鏈接生成掃描任務(wù),將生成的掃描任務(wù)返回給掃描進(jìn)程;掃描進(jìn)程對(duì)收到的子鏈接進(jìn)行漏洞掃描,出現(xiàn)漏洞時(shí)生成漏洞數(shù)據(jù),并依據(jù)漏洞數(shù)據(jù)生成掃描結(jié)果。根據(jù)本發(fā)明提供的技術(shù)方案,能夠大大提高web安全測(cè)試的效率。
【專利說明】一種實(shí)現(xiàn)安全掃描的方法及分布式系統(tǒng)
【【技術(shù)領(lǐng)域】】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)的安全測(cè)試技術(shù),尤其涉及一種實(shí)現(xiàn)安全掃描方法及分布式系統(tǒng)。
【【背景技術(shù)】】
[0002]目前,對(duì)網(wǎng)站進(jìn)行web安全測(cè)試的方法主要有以下三種方式:
[0003]第一種是由專門的安全測(cè)試人員對(duì)網(wǎng)站進(jìn)行人工web安全測(cè)試。這種方式的缺點(diǎn)是:依賴于人工操作,測(cè)試周期較長(zhǎng),需要占用較多人力資源和時(shí)間資源,測(cè)試效率較低。
[0004]第二種是利用一些安全掃描工具對(duì)網(wǎng)站進(jìn)行安全掃描,這種方式的缺點(diǎn)是:安全掃描工具都是客戶端或服務(wù)器模式,仍然需要依賴人工進(jìn)行安裝和部署客戶端或服務(wù)器,需要占用較多人力資源和時(shí)間資源,測(cè)試效率較低。
[0005]第三種是安全測(cè)試人員通過web頁面提交掃描任務(wù)后,利用抓取URL模塊得到需要的子鏈接,然后進(jìn)入漏洞掃描,最后生成掃描報(bào)告。這種方式的缺點(diǎn)是:抓取工具和掃描工具在同一設(shè)備下串行工作,這樣爬蟲工具和掃描工具勢(shì)必會(huì)出現(xiàn)相互等待和相互制約的情況,而且整個(gè)設(shè)備的穩(wěn)定性、容錯(cuò)性和方便擴(kuò)展性都將受到較大制約,測(cè)試效率較低?!?br/>【發(fā)明內(nèi)容】

[0006]本發(fā)明提供了一種實(shí)現(xiàn)安全掃描的方法及分布式系統(tǒng),能夠大大提高web安全測(cè)試的效率。
[0007]本發(fā)明的具體技術(shù)方案如下:
[0008]根據(jù)本發(fā)明一優(yōu)選實(shí)施例,一種實(shí)現(xiàn)安全掃描的分布式系統(tǒng),包括:開始任務(wù)接口、包括待爬取消息隊(duì)列和待掃描消息隊(duì)列的消息服務(wù)器、包括一個(gè)以上爬蟲進(jìn)程的爬蟲集群、包含掃描監(jiān)聽進(jìn)程和數(shù)據(jù)庫的監(jiān)聽服務(wù)器、web服務(wù)器(server)和包括一個(gè)以上掃描進(jìn)程的掃描集群;其中,
[0009]開始任務(wù)接口,用于將生成的任務(wù)消息上傳到待爬取消息隊(duì)列;
[0010]爬蟲進(jìn)程,用于依據(jù)在所述待爬取消息隊(duì)列中監(jiān)聽到的任務(wù)消息中的待掃描任務(wù)入口 URL,得到所述待掃描任務(wù)入口 URL下的子鏈接,并發(fā)送掃描消息給待掃描消息隊(duì)列;
[0011]掃描監(jiān)聽進(jìn)程,用于在待掃描消息隊(duì)列監(jiān)聽到所述掃描消息時(shí),將所述子鏈接存儲(chǔ)到數(shù)據(jù)庫;
[0012]web server,用于收到掃描進(jìn)程發(fā)送的http請(qǐng)求后,依據(jù)數(shù)據(jù)庫存儲(chǔ)的子鏈接生成掃描任務(wù),將生成的掃描任務(wù)返回給掃描進(jìn)程;
[0013]掃描進(jìn)程,用于對(duì)收到的子鏈接進(jìn)行漏洞掃描,出現(xiàn)漏洞時(shí)生成漏洞數(shù)據(jù),并依據(jù)漏洞數(shù)據(jù)生成掃描結(jié)果。
[0014]上述系統(tǒng)中,所述爬蟲進(jìn)程在得到所述待掃描任務(wù)入口 URL下的子鏈接時(shí),具體包括:
[0015]對(duì)待爬取消息隊(duì)列進(jìn)行監(jiān)聽,第一個(gè)監(jiān)聽到任務(wù)消息的爬蟲進(jìn)程獲取所述任務(wù)消息,并在所述待爬取消息隊(duì)列中將所述任務(wù)消息的標(biāo)志位設(shè)置為正在處理;
[0016]對(duì)所述任務(wù)消息中的待掃描任務(wù)入口 URL進(jìn)行爬取,得到所述待掃描任務(wù)入口URL下的所有子鏈接。
[0017]上述系統(tǒng)中,所述待爬取消息隊(duì)列,還用于當(dāng)爬蟲進(jìn)程對(duì)待掃描任務(wù)入口 URL進(jìn)行爬取的過程中,所述爬蟲進(jìn)程所在的機(jī)器出現(xiàn)故障時(shí),將所述爬蟲進(jìn)程正在爬取的任務(wù)消息的標(biāo)志位設(shè)置為等待處理。
[0018]上述系統(tǒng)中,所述爬蟲進(jìn)程,還用于依據(jù)得到的待掃描任務(wù)入口 URL的子鏈接生成爬蟲結(jié)果,將保存爬蟲結(jié)果的爬蟲結(jié)果文件保存到緩存服務(wù)器。
[0019]上述系統(tǒng)中,所述web server在將生成的掃描任務(wù)發(fā)送給掃描進(jìn)程時(shí),具體包括:
[0020]依據(jù)數(shù)據(jù)庫中的子鏈接生成掃描任務(wù),每個(gè)掃描任務(wù)中包含的子鏈接的數(shù)量等于預(yù)設(shè)的任務(wù)鏈接數(shù);
[0021]依據(jù)每個(gè)掃描進(jìn)程一次只發(fā)送一個(gè)掃描任務(wù)的策略,將生成的掃描任務(wù)返回給請(qǐng)求掃描任務(wù)的掃描進(jìn)程;
[0022]將掃描任務(wù)中子鏈接在數(shù)據(jù)庫中的標(biāo)志位設(shè)置為正在掃描。
[0023]上述系統(tǒng)中,所述掃描進(jìn)程在對(duì)收到的子鏈接進(jìn)行漏洞掃描時(shí),具體包括:
[0024]從掃描任務(wù)中第一個(gè)子鏈接的第一個(gè)參數(shù)開始,將規(guī)則庫中的參數(shù)值作為子鏈接中參數(shù)的參數(shù)值輸入到子鏈接中,如果輸入后報(bào)出漏洞則終止對(duì)所述參數(shù)的掃描,對(duì)所述子鏈接的其他參數(shù)進(jìn)行掃描,對(duì)所述子鏈接的所有參數(shù)掃描完畢后,對(duì)掃描任務(wù)中的其他子鏈接進(jìn)行掃描。
[0025]上述系統(tǒng)中,所述web server,還用于在等待超時(shí)時(shí)間內(nèi)沒有收到掃描進(jìn)程發(fā)送的確認(rèn)完成信息時(shí),將子鏈接在數(shù)據(jù)庫中的標(biāo)志位設(shè)置為等待分配。
[0026]上述系統(tǒng)中,該系統(tǒng)還包括:停止掃描接口 ;
[0027]所述消息服務(wù)器還包括停止爬取消息隊(duì)列和停止掃描消息隊(duì)列;
[0028]停止掃描接口,用于前端界面的停止任務(wù)按鈕被觸發(fā)后,判斷所述掃描任務(wù)處于爬取過程還是掃描過程;如果所述掃描任務(wù)處于爬取過程,將生成的停止爬取消息發(fā)送到消息服務(wù)器的停止爬取消息隊(duì)列;爬蟲進(jìn)程用于從停止爬取消息隊(duì)列監(jiān)聽到停止爬取消息時(shí),終止所述掃描任務(wù)的爬取操作;
[0029]如果掃描任務(wù)處于掃描過程,停止掃描接口用于將生成的停止掃描消息發(fā)送到停止掃描消息隊(duì)列,掃描監(jiān)聽進(jìn)程用于從停止掃描消息隊(duì)列監(jiān)聽到停止掃描消息時(shí),如果掃描任務(wù)的子鏈接還沒有被分配到掃描進(jìn)程,則將所述子鏈接設(shè)置為停止掃描;如果所述子鏈接已經(jīng)被分配到掃描進(jìn)程,則不停止所述子鏈接的掃描。
[0030]一種實(shí)現(xiàn)安全掃描的方法,開始任務(wù)接口將生成的任務(wù)消息上傳到待爬取消息隊(duì)列;爬蟲進(jìn)程依據(jù)在所述待爬取消息隊(duì)列中監(jiān)聽到的任務(wù)消息中的待掃描任務(wù)入口 URL,得到所述待掃描任務(wù)入口 URL下的子鏈接,并發(fā)送掃描消息給待掃描消息隊(duì)列;掃描監(jiān)聽進(jìn)程在待掃描消息隊(duì)列監(jiān)聽到所述掃描消息時(shí),將所述子鏈接存儲(chǔ)到數(shù)據(jù)庫;包括:
[0031]web server收到掃描進(jìn)程發(fā)送的http請(qǐng)求后,依據(jù)數(shù)據(jù)庫存儲(chǔ)的子鏈接生成掃描任務(wù),將生成的掃描任務(wù)返回給掃描進(jìn)程;
[0032]掃描進(jìn)程對(duì)收到的子鏈接進(jìn)行漏洞掃描,出現(xiàn)漏洞時(shí)生成漏洞數(shù)據(jù),并依據(jù)漏洞數(shù)據(jù)生成掃描結(jié)果。
[0033]上述方法中,爬蟲進(jìn)程得到所述待掃描任務(wù)入口 URL下的子鏈接的方法為:
[0034]爬蟲進(jìn)程對(duì)待爬取消息隊(duì)列進(jìn)行監(jiān)聽,第一個(gè)監(jiān)聽到任務(wù)消息的爬蟲進(jìn)程獲取所述任務(wù)消息,并在所述待爬取消息隊(duì)列中將所述任務(wù)消息的標(biāo)志位設(shè)置為正在處理;
[0035]爬蟲進(jìn)程對(duì)所述任務(wù)消息中的待掃描任務(wù)入口 URL進(jìn)行爬取,得到所述待掃描任務(wù)入口 URL下的所有子鏈接。
[0036]上述方法中,該方法還包括:
[0037]當(dāng)爬蟲進(jìn)程對(duì)待掃描任務(wù)入口 URL進(jìn)行爬取的過程中,所述爬蟲進(jìn)程所在的機(jī)器出現(xiàn)故障,待爬取消息隊(duì)列將所述爬蟲進(jìn)程正在爬取的任務(wù)消息的標(biāo)志位設(shè)置為等待處理。
[0038]上述方法中,爬蟲進(jìn)程發(fā)送掃描消息給待掃描消息隊(duì)列之前,該方法還包括:
[0039]爬蟲進(jìn)程依據(jù)得到的待掃描任務(wù)入口 URL的子鏈接生成爬蟲結(jié)果,將保存爬蟲結(jié)果的爬蟲結(jié)果文件保存到緩存服務(wù)器。
[0040]上述方法中,所述web server將生成的掃描任務(wù)發(fā)送給掃描進(jìn)程的方法為:
[0041]依據(jù)數(shù)據(jù)庫中的子鏈接生成掃描任務(wù),每個(gè)掃描任務(wù)中包含的子鏈接的數(shù)量等于預(yù)設(shè)的任務(wù)鏈接數(shù);
[0042]依據(jù)每個(gè)掃描進(jìn)程一次只發(fā)送一個(gè)掃描任務(wù)的策略,將生成的掃描任務(wù)返回給請(qǐng)求掃描任務(wù)的掃描進(jìn)程;
[0043]將掃描任務(wù)中子鏈接在數(shù)據(jù)庫中的標(biāo)志位設(shè)置為正在掃描。
[0044]上述方法中,掃描進(jìn)程對(duì)收到的子鏈接進(jìn)行漏洞掃描的方法為:
[0045]掃描進(jìn)程從掃描任務(wù)中第一個(gè)子鏈接的第一個(gè)參數(shù)開始,將規(guī)則庫中的參數(shù)值作為子鏈接中參數(shù)的參數(shù)值輸入到子鏈接中,如果輸入后報(bào)出漏洞則終止對(duì)所述參數(shù)的掃描,對(duì)所述子鏈接的其他參數(shù)進(jìn)行掃描,對(duì)所述子鏈接的所有參數(shù)掃描完畢后,對(duì)掃描任務(wù)中的其他子鏈接進(jìn)行掃描。
[0046]上述方法中,該方法還包括:
[0047]如果web server在等待超時(shí)時(shí)間內(nèi)沒有收到掃描進(jìn)程發(fā)送的確認(rèn)完成信息,則將子鏈接在數(shù)據(jù)庫中的標(biāo)志位設(shè)置為等待分配。
[0048]上述方法中,該方法還包括:
[0049]當(dāng)前端界面的停止任務(wù)按鈕被觸發(fā)后,停止掃描接口判斷所述掃描任務(wù)處于爬取過程還是掃描過程;
[0050]如果所述掃描任務(wù)處于爬取過程,將生成的停止爬取消息發(fā)送到消息服務(wù)器的停止爬取消息隊(duì)列,爬蟲進(jìn)程從停止爬取消息隊(duì)列監(jiān)聽到停止爬取消息時(shí),終止所述掃描任務(wù)的爬取操作;
[0051]如果掃描任務(wù)處于掃描過程,停止掃描接口將生成的停止掃描消息發(fā)送到停止掃描消息隊(duì)列,掃描監(jiān)聽進(jìn)程從停止掃描消息隊(duì)列監(jiān)聽到停止掃描消息時(shí),如果掃描任務(wù)的子鏈接還沒有被分配到掃描進(jìn)程,則將所述子鏈接設(shè)置為停止掃描;如果所述子鏈接已經(jīng)被分配到掃描進(jìn)程,則不停止所述子鏈接的掃描。
[0052]由以上技術(shù)方案可以看出,本發(fā)明提供的具有以下有益效果:
[0053]爬蟲集群和掃描集群作為兩個(gè)相互獨(dú)立、相互隔離的單獨(dú)的分布式集群,互不制約、互不影響,能夠最大限度的利用分布式集群的并行處理能力,大大提高web安全掃描的效率。
【【專利附圖】

【附圖說明】】
[0054]圖1是本發(fā)明實(shí)現(xiàn)安全掃描的分布式系統(tǒng)的優(yōu)選實(shí)施例的結(jié)構(gòu)示意圖;
[0055]圖2是本發(fā)明實(shí)現(xiàn)安全掃描的方法的優(yōu)選實(shí)施例的流程示意圖。
【【具體實(shí)施方式】】
[0056]本發(fā)明的基本思想是:開始任務(wù)接口將生成的任務(wù)消息上傳到待爬取消息隊(duì)列;爬蟲進(jìn)程依據(jù)在所述待爬取消息隊(duì)列中監(jiān)聽到的任務(wù)消息中的待掃描任務(wù)入口 URL,得到所述待掃描任務(wù)入口 URL下的子鏈接,并發(fā)送掃描消息給待掃描消息隊(duì)列;掃描監(jiān)聽進(jìn)程在待掃描消息隊(duì)列監(jiān)聽到所述掃描消息時(shí),將所述子鏈接存儲(chǔ)到數(shù)據(jù)庫;《eb server收到掃描進(jìn)程發(fā)送的http請(qǐng)求后,依據(jù)數(shù)據(jù)庫存儲(chǔ)的子鏈接生成掃描任務(wù),將生成的掃描任務(wù)返回給掃描進(jìn)程;掃描進(jìn)程對(duì)收到的子鏈接進(jìn)行漏洞掃描,出現(xiàn)漏洞時(shí)生成漏洞數(shù)據(jù),并依據(jù)漏洞數(shù)據(jù)生成掃描結(jié)果。
[0057]為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)描述。
[0058]本發(fā)明提供一種實(shí)現(xiàn)安全掃描的分布式系統(tǒng),圖1是本發(fā)明實(shí)現(xiàn)安全掃描的分布式系統(tǒng)的優(yōu)選實(shí)施例的結(jié)構(gòu)示意圖,如圖1所示,該系統(tǒng)包括:前端界面、開始任務(wù)接口、停止掃描接口、消息服務(wù)器、爬蟲集群、監(jiān)聽服務(wù)器、web服務(wù)器server和掃描集群。
[0059]其中,消息服務(wù)器包括待爬取消息隊(duì)列、待掃描消息隊(duì)列、停止爬取消息隊(duì)列和停止掃描消息隊(duì)列。
[0060]爬蟲集群包括一個(gè)以上機(jī)器,每個(gè)機(jī)器包括一個(gè)以上爬蟲進(jìn)程。
[0061]監(jiān)聽服務(wù)器包括掃描監(jiān)聽進(jìn)程和數(shù)據(jù)庫。
[0062]掃描集群包括一個(gè)以上機(jī)器,每個(gè)機(jī)器包括一個(gè)以上掃描進(jìn)程。
[0063]基于上述系統(tǒng),本發(fā)明還提供一種實(shí)現(xiàn)安全掃描的方法,圖2是本發(fā)明實(shí)現(xiàn)安全掃描的方法的優(yōu)選實(shí)施例的流程示意圖,如圖2所示,該優(yōu)選實(shí)施例包括以下步驟:
[0064]步驟201,前端界面接收用戶提交的掃描任務(wù)信息,開始任務(wù)接口依據(jù)前端界面接收的掃描任務(wù)信息生成任務(wù)消息,將該任務(wù)消息發(fā)送到消息服務(wù)器的待爬取消息隊(duì)列。
[0065]具體的,前端界面向用戶提供選項(xiàng)框和輸入框,用來接收用戶提交的掃描任務(wù)信息,提交的掃描任務(wù)信息包括以下內(nèi)容:待掃描任務(wù)入口 URL、用戶名、密碼、登錄類型、爬取層級(jí)和終端類型;其中,如果爬蟲集群對(duì)待掃描任務(wù)入口 URL進(jìn)行爬取時(shí),該待掃描任務(wù)入口 URL下的子鏈接需要登錄后才能爬取,則需要用戶提交用戶名和密碼,如果不存在需要登錄的子鏈接,則用戶名和密碼為空;如果待掃描任務(wù)入口 URL下的子鏈接數(shù)量巨大,則可以依據(jù)爬取層級(jí),只獲取待掃描任務(wù)入口 URL下該爬取層級(jí)的子鏈接;終端類型包括PC終端、移動(dòng)終端等;用戶在輸入掃描任務(wù)信息后可以觸發(fā)前端界面提供的提交按鈕來提交掃描任務(wù)給前端界面。
[0066]前端界面收到用戶提交的掃描任務(wù)信息后,調(diào)用開始任務(wù)接口,該開始任務(wù)接口依據(jù)前端界面接收的掃描任務(wù)信息生成任務(wù)消息;例如,生成的任務(wù)消息可以為:[0067]msg={,id,:1d,,project_id,:project_id,,url,: target_urI,,user_name’:user_name, , user_passwd’:user_passed, , login_type>:login_type, , url_pre’:url_pre, ’ user_agent’:user_agent};其中,’ id’:1d 為任務(wù) ID,’ pro ject_id’:project_id為項(xiàng)目ID,對(duì)于用戶提交的每個(gè)掃描任務(wù)都生成一個(gè)項(xiàng)目ID,但是一個(gè)掃描任務(wù)可能會(huì)執(zhí)行多次掃描操作,因此,對(duì)應(yīng)每次掃描操作將生成一個(gè)任務(wù)ID,因此,一個(gè)項(xiàng)目ID對(duì)應(yīng)一個(gè)以上任務(wù)ID ; ’url’:target_url為待掃描任務(wù)入口 URL ,,user_name’:user_name 為登錄時(shí)需要的用戶名,’ user_passwd’:user_passed為登錄時(shí)需要的密碼,’ login_type’: login_type 為登錄類型’ url_pre’:url_pre 為爬取層級(jí),’ user_agent’:user_agent 為終端類型。
[0068]消息服務(wù)器中包括待爬取消息隊(duì)列q_sp i der、停止爬取消息隊(duì)列t_sp i der_stop、待掃描消息隊(duì)列q_scan和停止掃描消息隊(duì)列q_scan_stop ;開始任務(wù)接口將生成的任務(wù)消息發(fā)送到消息服務(wù)器的待爬取消息隊(duì)列。
[0069]步驟202,爬蟲集群中的爬蟲進(jìn)程在所述待爬取消息隊(duì)列中監(jiān)聽到任務(wù)消息時(shí),對(duì)該任務(wù)消息中待掃描任務(wù)入口 URL進(jìn)行爬取,得到待掃描任務(wù)入口 URL下的所有子鏈接。
[0070]具體的,爬蟲集群中包括一個(gè)以上機(jī)器,每個(gè)機(jī)器包括一個(gè)以上爬蟲進(jìn)程,每個(gè)爬蟲進(jìn)程都對(duì)消息服務(wù)器中的待爬取消息隊(duì)列進(jìn)行監(jiān)聽;例如,爬蟲集群中可以有50個(gè)機(jī)器,每個(gè)機(jī)器上有10個(gè)爬蟲進(jìn)程,每個(gè)爬蟲進(jìn)程都可以作為一個(gè)消費(fèi)者對(duì)任務(wù)消息進(jìn)行消費(fèi),這樣就有500個(gè)爬蟲進(jìn)程監(jiān)聽待爬取消息隊(duì)列,通過增加爬蟲集群中的機(jī)器就能夠方便擴(kuò)展爬蟲集群的并行爬取能力,使得爬蟲集群具有較高的擴(kuò)展性和較高的處理能力。
[0071]當(dāng)爬蟲進(jìn)程在待爬取消息隊(duì)列中監(jiān)聽到任務(wù)消息時(shí),第一個(gè)監(jiān)聽到該任務(wù)消息的爬蟲進(jìn)程將獲取該任務(wù)消息,爬蟲進(jìn)程對(duì)該任務(wù)消息中的待掃描任務(wù)入口 URL進(jìn)行爬??;同時(shí),該爬蟲進(jìn)程在獲取到任務(wù)消息后,會(huì)在待爬取消息隊(duì)列中將該任務(wù)消息的標(biāo)志位設(shè)置為正在處理,表示已經(jīng)有爬蟲進(jìn)程處理該任務(wù)消息,這樣,其他爬蟲進(jìn)程就不會(huì)對(duì)該任務(wù)消息進(jìn)行重復(fù)爬取操作;當(dāng)爬蟲進(jìn)程對(duì)待掃描任務(wù)入口 URL進(jìn)行爬取的過程中,如果該爬蟲進(jìn)程所在的機(jī)器出現(xiàn)故障,導(dǎo)致該爬蟲進(jìn)程與待爬取消息隊(duì)列斷開連接,則待爬取消息隊(duì)列在檢測(cè)到該情況后將該爬蟲進(jìn)程正在處理的任務(wù)消息的標(biāo)志位設(shè)置為等待處理,這樣,其他的爬蟲進(jìn)程就可以對(duì)該任務(wù)消息進(jìn)行爬取操作了,從而提高爬蟲集群的容錯(cuò)性;爬蟲進(jìn)程對(duì)任務(wù)消息中的待掃描任務(wù)入口 URL的爬取操作完畢后,得到該待掃描任務(wù)入口URL下的所有子鏈接,爬蟲進(jìn)程向待爬取消息隊(duì)列返回一個(gè)ACK消息,用于通知待爬取消息隊(duì)列該任務(wù)消息已經(jīng)爬取完畢,待爬取消息隊(duì)列就可以將該任務(wù)消息刪除,如此,可以保證掃描任務(wù)不會(huì)重復(fù)且不會(huì)丟失。
[0072]本優(yōu)選實(shí)施例中,由于爬蟲進(jìn)程爬取操作的時(shí)間相對(duì)較短,因此將一個(gè)任務(wù)消息交由一個(gè)爬蟲進(jìn)程單獨(dú)進(jìn)行處理即可。
[0073]步驟203,所述爬蟲進(jìn)程將得到的子鏈接保存到緩存服務(wù)器,并發(fā)送掃描消息給消息服務(wù)器的待掃描消息隊(duì)列;監(jiān)聽服務(wù)器中的掃描監(jiān)聽進(jìn)程從待掃描消息隊(duì)列監(jiān)聽到掃描消息時(shí),將所述子鏈接存儲(chǔ)到監(jiān)聽服務(wù)器中的數(shù)據(jù)庫。
[0074]具體的,爬蟲集群中的爬蟲進(jìn)程對(duì)任務(wù)消息中的待掃描任務(wù)入口 URL的爬取操作完畢后,依據(jù)爬取得到的該待掃描任務(wù)入口 URL的子鏈接生成爬蟲結(jié)果,該爬蟲結(jié)果包括待掃描任務(wù)入口 URL的子鏈接、對(duì)應(yīng)的http請(qǐng)求類型和cookie ;爬蟲進(jìn)程將爬蟲結(jié)果實(shí)時(shí)保存到緩存服務(wù)器的爬蟲結(jié)果文件中,該爬蟲結(jié)果文件中保存爬蟲結(jié)果,且該爬蟲結(jié)果文件以掃描任務(wù)的任務(wù)ID命名,如文件名為id.txt。
[0075]爬蟲集群存儲(chǔ)好爬蟲結(jié)果后,就完成了自身的爬取操作,向消息服務(wù)器的待掃描消息隊(duì)列發(fā)送掃描消息,該掃描消息中攜帶爬蟲結(jié)果文件的文件名,例如,該掃描消息可以為:msg={’ id’:1d, ’ project_id’:project_id, ’ url’:url}。
[0076]監(jiān)聽服務(wù)器中的掃描監(jiān)聽進(jìn)程對(duì)待掃描消息隊(duì)列進(jìn)行監(jiān)聽,當(dāng)從待掃描消息隊(duì)列監(jiān)聽到掃描消息時(shí),依據(jù)掃描消息中的任務(wù)ID從緩存服務(wù)器中找到對(duì)應(yīng)的爬蟲結(jié)果文件,并將任務(wù)ID、項(xiàng)目ID和爬蟲結(jié)果文件中的所有子鏈接拷貝到監(jiān)聽服務(wù)器中的數(shù)據(jù)庫,由該數(shù)據(jù)庫對(duì)子鏈接進(jìn)行存儲(chǔ),并在數(shù)據(jù)庫中將這些子鏈接的標(biāo)志位設(shè)置為等待分配init,表示這些子鏈接可以被分配到掃描進(jìn)程進(jìn)行掃描,該標(biāo)志位還可以設(shè)置為正在掃描scanning、停止掃描stop、掃描完畢complete,所述scanning表示子鏈接正在被掃描進(jìn)程掃描,stop表示子鏈接被停止掃描,不能分配給掃描進(jìn)程,complete表示子鏈接掃描完畢。
[0077]步驟204, web server收到掃描集群中的掃描進(jìn)程發(fā)送的http請(qǐng)求后,依據(jù)數(shù)據(jù)庫中的子鏈接生成掃描任務(wù),所述掃描任務(wù)中包括的子鏈接數(shù)量等于預(yù)設(shè)任務(wù)鏈接數(shù),webserver將生成的掃描任務(wù)發(fā)送給掃描進(jìn)程。
[0078]具體的,掃描集群中包括一個(gè)以上機(jī)器,每個(gè)機(jī)器包括一個(gè)以上掃描進(jìn)程,每個(gè)掃描進(jìn)程都周期性的向web server)發(fā)送http請(qǐng)求,用于向web server請(qǐng)求掃描任務(wù)。例如,掃描集群中可以有6個(gè)機(jī)器,每個(gè)機(jī)器上啟動(dòng)10個(gè)掃描進(jìn)程,這樣一共有60個(gè)掃描進(jìn)程,這些掃描進(jìn)程可以同時(shí)執(zhí)行掃描任務(wù),通過增加掃描集群中的機(jī)器就能夠方便擴(kuò)展掃描集群的并行掃描能力,使得掃描集群具有較高的擴(kuò)展性。
[0079]web server收到掃描集群中的掃描進(jìn)程發(fā)送的http請(qǐng)求后,依據(jù)預(yù)設(shè)的任務(wù)鏈接數(shù)對(duì)數(shù)據(jù)庫中的子鏈接進(jìn)行劃分,生成一個(gè)以上掃描任務(wù),每個(gè)掃描任務(wù)中包含的子鏈接的數(shù)量等于預(yù)設(shè)的任務(wù)鏈接數(shù),web server依據(jù)每個(gè)掃描進(jìn)程一次只發(fā)送一個(gè)掃描任務(wù)的策略,將生成的掃描任務(wù)返回給請(qǐng)求掃描任務(wù)的掃描進(jìn)程;其中,任務(wù)鏈接數(shù)的數(shù)值是可以配置的,可以依據(jù)掃描集群中單個(gè)機(jī)器的處理能力配置該任務(wù)鏈接數(shù),該任務(wù)鏈接數(shù)用于限制發(fā)送給掃描進(jìn)程的掃描任務(wù)中子鏈接的數(shù)量;如果數(shù)據(jù)庫中沒有子鏈接,則webserver收到掃描進(jìn)程的http請(qǐng)求后,忽略該http請(qǐng)求;web server在將掃描任務(wù)返回給掃描進(jìn)程后,將掃描任務(wù)中子鏈接在數(shù)據(jù)庫中的標(biāo)志位設(shè)置為scanning。
[0080]例如,web server以每20個(gè)URL為一個(gè)掃描任務(wù),將數(shù)據(jù)庫中的子鏈接分成多個(gè)掃描任務(wù),每個(gè)掃描任務(wù)中有20個(gè)URL, web server將生成的掃描任務(wù)分發(fā)到多個(gè)掃描進(jìn)程,如此,可以達(dá)到掃描負(fù)載均衡的目的,一個(gè)掃描任務(wù)會(huì)被劃分為多個(gè)掃描子任務(wù),從而分配給多個(gè)掃描進(jìn)程,多個(gè)掃描進(jìn)程并行執(zhí)行掃描操作,提高掃描效率;同時(shí)每個(gè)掃描進(jìn)程上需要掃描的子鏈接的數(shù)量相同,因此每個(gè)掃描進(jìn)程所承擔(dān)的負(fù)載相同。
[0081]步驟205,掃描進(jìn)程對(duì)收到的子鏈接進(jìn)行漏洞掃描,出現(xiàn)漏洞時(shí)生成漏洞數(shù)據(jù),并依據(jù)漏洞數(shù)據(jù)生成掃描結(jié)果。
[0082]具體的,掃描進(jìn)程收到web server分配的掃描任務(wù)后,對(duì)其中的第一個(gè)子鏈接的第一個(gè)參數(shù)開始對(duì)掃描任務(wù)中的子鏈接依次進(jìn)行掃描,將規(guī)則庫中的參數(shù)值作為子鏈接中參數(shù)的參數(shù)值輸入到子鏈接中,如果輸入后報(bào)出漏洞則終止對(duì)該參數(shù)進(jìn)行掃描,實(shí)時(shí)生成對(duì)應(yīng)的漏洞數(shù)據(jù)寫入數(shù)據(jù)庫;同理,對(duì)該子鏈接的其他參數(shù)進(jìn)行掃描,對(duì)該子鏈接的所有參數(shù)掃描完畢后,對(duì)掃描任務(wù)中的其他子鏈接進(jìn)行掃描,以此類推,最終對(duì)掃描任務(wù)中的所有子鏈接都掃描完畢,并得到相應(yīng)的漏洞數(shù)據(jù)。
[0083]掃描進(jìn)程對(duì)子鏈接進(jìn)行掃描的過程中,每掃描完一個(gè)子鏈接就可以向Webserver返回一個(gè)確認(rèn)完成信息,其中攜帶該子鏈接的任務(wù)ID和項(xiàng)目ID ;webserver就可以將該子鏈接在數(shù)據(jù)庫中的標(biāo)志位設(shè)置為complete ;如果Webserver在等待超時(shí)時(shí)間內(nèi)沒有收到掃描進(jìn)程發(fā)送的確認(rèn)完成信息,則認(rèn)為該子鏈接沒有掃描成功,掃描進(jìn)程所在的機(jī)器出現(xiàn)異常,則將該子鏈接在數(shù)據(jù)庫中的標(biāo)志位由scanning重新設(shè)置為init,使得該子鏈接可以再被分配到其他掃描進(jìn)程進(jìn)行掃描,從而提高掃描集群的容錯(cuò)性。同時(shí),掃描進(jìn)程還可以將掃描進(jìn)度實(shí)時(shí)同步到前端界面,掃描進(jìn)度包括已完成掃描子鏈接的個(gè)數(shù)和待掃描子鏈接的個(gè)數(shù),還可以將生成的漏洞數(shù)據(jù)實(shí)時(shí)同步到前端界面。
[0084]掃描完畢后,掃描進(jìn)程依據(jù)數(shù)據(jù)庫中保存的漏洞數(shù)據(jù)生成掃描結(jié)果報(bào)告,將該掃描結(jié)果報(bào)告通過前端界面顯示給用戶;其中,掃描結(jié)果報(bào)告包括以下內(nèi)容:出現(xiàn)漏洞的子鏈接、子鏈接中出現(xiàn)漏洞的參數(shù)、漏洞類型、風(fēng)險(xiǎn)級(jí)別、漏洞的具體描述;所述風(fēng)險(xiǎn)級(jí)別包括聞、中、低和未知。
[0085]例如,掃描進(jìn)程中一般有很多漏洞,如跨站腳本攻擊(XSS、Cross-sitescripting)、結(jié)構(gòu)化查詢語言結(jié)構(gòu)(SQL, Structured Query Language)注入攻擊等,以XSS為例,得到掃描任務(wù)后,從第一個(gè)子鏈接的第一個(gè)參數(shù)開始,將xsslib.txt規(guī)則庫里的參數(shù)值依次作為第一個(gè)參數(shù)的參數(shù)值輸入到第一個(gè)子連接中,如果報(bào)出漏洞,則終止第一個(gè)參數(shù)的掃描,生成漏洞數(shù)據(jù)后,對(duì)第一個(gè)子鏈接的第二個(gè)參數(shù)進(jìn)行掃描,將xsslib.txt規(guī)則庫里的參數(shù)值依次作為第二個(gè)參數(shù)的參數(shù)值輸入到第一個(gè)子連接中,同理,遇到漏洞則終止掃描,并生成漏洞數(shù)據(jù),第一個(gè)子鏈接的所有參數(shù)掃描完畢后對(duì)第二個(gè)子鏈接以同樣的方法進(jìn)行掃描。
[0086]該方法還可以包括:
[0087]前端界面在用戶提交掃描任務(wù)后,會(huì)向用戶顯示已經(jīng)提交的掃描任務(wù)及相關(guān)信息,如掃描任務(wù)、當(dāng)前掃描進(jìn)度、停止按鈕等;如果用戶想要停止該掃描任務(wù),可以觸發(fā)該停止任務(wù)按鈕,前端界面的停止任務(wù)按鈕被觸發(fā)后,調(diào)用數(shù)據(jù)庫提供的停止掃描接口,該停止掃描接口依據(jù)數(shù)據(jù)庫中是否有該掃描任務(wù)的掃描任務(wù)號(hào),判斷該掃描任務(wù)處于爬取過程還是掃描過程。
[0088]如果數(shù)據(jù)庫中沒有掃描任務(wù)號(hào),表示該掃描任務(wù)處于爬取過程,因此停止掃描接口生成停止爬取消息,該停止爬取消息可以為:msg={’ id,:1d, ’ project_id’:project_id};停止掃描接口將該停止爬取消息發(fā)送到消息服務(wù)器的停止爬取消息隊(duì)列,該停止爬取消息隊(duì)列為一對(duì)多機(jī)制,停止爬取消息隊(duì)列中的停止爬取消息可以同時(shí)被一個(gè)以上爬蟲進(jìn)程處理,爬蟲集群中的爬蟲進(jìn)程采用多線程機(jī)制,部分線程進(jìn)行子鏈接的爬取操作,采用一個(gè)線程對(duì)停止爬取消息隊(duì)列進(jìn)行監(jiān)聽,當(dāng)監(jiān)聽到有停止爬取消息時(shí),爬蟲集群中的每個(gè)爬蟲進(jìn)程都需要判斷該停止爬取消息中的任務(wù)ID與自身當(dāng)前爬取的任務(wù)消息中的任務(wù)ID是否一致,如果一致,則爬蟲進(jìn)程終止自身當(dāng)前的爬取操作,然后向停止爬取消息隊(duì)列發(fā)送一個(gè)ACK消息,停止爬取消息隊(duì)列收到ACK消息后,將該停止爬取消息在停止爬取消息隊(duì)列中刪除。
[0089]如果數(shù)據(jù)庫已經(jīng)生成掃描任務(wù)號(hào),表示該掃描任務(wù)處于掃描過程,因此停止掃描接口生成停止掃描消息,該停止掃描消息可以為:msg={’ id’:1d, ’ project_id’:project_id};停止掃描接口將該停止掃描消息發(fā)送到停止掃描消息隊(duì)列,掃描監(jiān)聽進(jìn)程對(duì)停止掃描消息隊(duì)列進(jìn)行監(jiān)聽,監(jiān)聽到停止掃描消息時(shí),依據(jù)其中的任務(wù)ID和項(xiàng)目ID判斷數(shù)據(jù)庫中對(duì)應(yīng)的子鏈接的標(biāo)志位,如果標(biāo)志位是init,表示該掃描任務(wù)的子鏈接還沒有被web server分配到掃描進(jìn)程,則將該子鏈接的標(biāo)志位設(shè)置為stop,表示該子鏈接不能進(jìn)行掃描,從而實(shí)現(xiàn)停止掃描任務(wù);如果標(biāo)志位是scanning,表示該掃描任務(wù)的子鏈接已經(jīng)被分配到掃描進(jìn)程進(jìn)行掃描,則不能停止該子鏈接的掃描,不需要進(jìn)一步處理,任由掃描進(jìn)程將該掃描任務(wù)掃描完畢。
[0090]為實(shí)現(xiàn)上述方法,如圖1所示,該實(shí)現(xiàn)安全掃描的分布式系統(tǒng)中:
[0091]開始任務(wù)接口,用于將生成的任務(wù)消息上傳到待爬取消息隊(duì)列;
[0092]爬蟲進(jìn)程,用于依據(jù)在所述待爬取消息隊(duì)列中監(jiān)聽到的任務(wù)消息中的待掃描任務(wù)入口 URL,得到所述待掃描任務(wù)入口 URL下的子鏈接,并發(fā)送掃描消息給待掃描消息隊(duì)列;
[0093]掃描監(jiān)聽進(jìn)程,用于在待掃描消息隊(duì)列監(jiān)聽到所述掃描消息時(shí),將所述子鏈接存儲(chǔ)到數(shù)據(jù)庫;
[0094]web server,用于收到掃描進(jìn)程發(fā)送的http請(qǐng)求后,依據(jù)數(shù)據(jù)庫存儲(chǔ)的子鏈接生成掃描任務(wù),將生成的掃描任務(wù)返回給掃描進(jìn)程;
[0095]掃描進(jìn)程,用于對(duì)收到的子鏈接進(jìn)行漏洞掃描,出現(xiàn)漏洞時(shí)生成漏洞數(shù)據(jù),并依據(jù)漏洞數(shù)據(jù)生成掃描結(jié)果。
[0096]其中,所述爬蟲進(jìn)程在得到所述待掃描任務(wù)入口 URL下的子鏈接時(shí),具體包括:
[0097]對(duì)待爬取消息隊(duì)列進(jìn)行監(jiān)聽,第一個(gè)監(jiān)聽到任務(wù)消息的爬蟲進(jìn)程獲取所述任務(wù)消息,并在所述待爬取消息隊(duì)列中將所述任務(wù)消息的標(biāo)志位設(shè)置為正在處理;
[0098]對(duì)所述任務(wù)消息中的待掃描任務(wù)入口 URL進(jìn)行爬取,得到所述待掃描任務(wù)入口URL下的所有子鏈接。
[0099]其中,所述待爬取消息隊(duì)列,還用于當(dāng)爬蟲進(jìn)程對(duì)待掃描任務(wù)入口 URL進(jìn)行爬取的過程中,所述爬蟲進(jìn)程所在的機(jī)器出現(xiàn)故障時(shí),將所述爬蟲進(jìn)程正在爬取的任務(wù)消息的標(biāo)志位設(shè)置為等待處理。
[0100]其中,所述爬蟲進(jìn)程,還用于依據(jù)得到的待掃描任務(wù)入口 URL的子鏈接生成爬蟲結(jié)果,將保存爬蟲結(jié)果的爬蟲結(jié)果文件保存到緩存服務(wù)器。
[0101]其中,所述web server在將生成的掃描任務(wù)發(fā)送給掃描進(jìn)程時(shí),具體包括:
[0102]依據(jù)數(shù)據(jù)庫中的子鏈接生成掃描任務(wù),每個(gè)掃描任務(wù)中包含的子鏈接的數(shù)量等于預(yù)設(shè)的任務(wù)鏈接數(shù);
[0103]依據(jù)每個(gè)掃描進(jìn)程一次只發(fā)送一個(gè)掃描任務(wù)的策略,將生成的掃描任務(wù)返回給請(qǐng)求掃描任務(wù)的掃描進(jìn)程;
[0104]將掃描任務(wù)中子鏈接在數(shù)據(jù)庫中的標(biāo)志位設(shè)置為正在掃描。
[0105]其中,所述掃描進(jìn)程在對(duì)收到的子鏈接進(jìn)行漏洞掃描時(shí),具體包括:
[0106]從掃描任務(wù)中第一個(gè)子鏈接的第一個(gè)參數(shù)開始,將規(guī)則庫中的參數(shù)值作為子鏈接中參數(shù)的參數(shù)值輸入到子鏈接中,如果輸入后報(bào)出漏洞則終止對(duì)所述參數(shù)的掃描,對(duì)所述子鏈接的其他參數(shù)進(jìn)行掃描,對(duì)所述子鏈接的所有參數(shù)掃描完畢后,對(duì)掃描任務(wù)中的其他子鏈接進(jìn)行掃描。[0107]其中,所述web server,還用于在等待超時(shí)時(shí)間內(nèi)沒有收到掃描進(jìn)程發(fā)送的確認(rèn)完成信息時(shí),將子鏈接在數(shù)據(jù)庫中的標(biāo)志位設(shè)置為等待分配。
[0108]其中,停止掃描接口,還用于前端界面的停止任務(wù)按鈕被觸發(fā)后,判斷所述掃描任務(wù)處于爬取過程還是掃描過程;如果所述掃描任務(wù)處于爬取過程,將生成的停止爬取消息發(fā)送到消息服務(wù)器的停止爬取消息隊(duì)列;爬蟲進(jìn)程用于從停止爬取消息隊(duì)列監(jiān)聽到停止爬取消息時(shí),終止所述掃描任務(wù)的爬取操作;
[0109]如果掃描任務(wù)處于掃描過程,停止掃描接口用于將生成的停止掃描消息發(fā)送到停止掃描消息隊(duì)列,掃描監(jiān)聽進(jìn)程用于從停止掃描消息隊(duì)列監(jiān)聽到停止掃描消息時(shí),如果掃描任務(wù)的子鏈接還沒有被分配到掃描進(jìn)程,則將所述子鏈接設(shè)置為停止掃描;如果所述子鏈接已經(jīng)被分配到掃描進(jìn)程,則不停止所述子鏈接的掃描。
[0110]本發(fā)明的上述技術(shù)方案,爬蟲集群和掃描集群作為兩個(gè)相互獨(dú)立、相互隔離的單獨(dú)的分布式集群,互不制約、互不影響,能夠最大限度的利用分布式集群的并行處理能力,大大提高Web安全掃描的效率;而且,掃描集群和爬蟲集群能夠各自配置負(fù)載均衡策略和容錯(cuò)策略,實(shí)現(xiàn)起來簡(jiǎn)單靈活。掃描集群和爬蟲集群還具有各自的擴(kuò)展性,因此,整個(gè)分布式系統(tǒng)具有聞擴(kuò)展性、聞穩(wěn)定性和聞容錯(cuò)性。
[0111]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。
【權(quán)利要求】
1.一種實(shí)現(xiàn)安全掃描的分布式系統(tǒng),其特征在于,該系統(tǒng)包括:開始任務(wù)接口、包括待爬取消息隊(duì)列和待掃描消息隊(duì)列的消息服務(wù)器、包括一個(gè)以上爬蟲進(jìn)程的爬蟲集群、包含掃描監(jiān)聽進(jìn)程和數(shù)據(jù)庫的監(jiān)聽服務(wù)器、web服務(wù)器server和包括一個(gè)以上掃描進(jìn)程的掃描集群;其中, 開始任務(wù)接口,用于將生成的任務(wù)消息上傳到待爬取消息隊(duì)列; 爬蟲進(jìn)程,用于依據(jù)在所述待爬取消息隊(duì)列中監(jiān)聽到的任務(wù)消息中的待掃描任務(wù)入口URL,得到所述待掃描任務(wù)入口 URL下的子鏈接,并發(fā)送掃描消息給待掃描消息隊(duì)列; 掃描監(jiān)聽進(jìn)程,用于在待掃描消息隊(duì)列監(jiān)聽到所述掃描消息時(shí),將所述子鏈接存儲(chǔ)到數(shù)據(jù)庫; web server,用于收到掃描進(jìn)程發(fā)送的http請(qǐng)求后,依據(jù)數(shù)據(jù)庫存儲(chǔ)的子鏈接生成掃描任務(wù),將生成的掃描任務(wù)返回給掃描進(jìn)程; 掃描進(jìn)程,用于對(duì)收到的子鏈接進(jìn)行漏洞掃描,出現(xiàn)漏洞時(shí)生成漏洞數(shù)據(jù),并依據(jù)漏洞數(shù)據(jù)生成掃描結(jié)果。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述爬蟲進(jìn)程在得到所述待掃描任務(wù)入口 URL下的子鏈接時(shí),具體包括: 對(duì)待爬取消息隊(duì)列進(jìn)行監(jiān)聽,第一個(gè)監(jiān)聽到任務(wù)消息的爬蟲進(jìn)程獲取所述任務(wù)消息,并在所述待爬取消息隊(duì)列中將所述任務(wù)消息的標(biāo)志位設(shè)置為正在處理; 對(duì)所述任務(wù)消息中的待掃描任務(wù)入口 URL進(jìn)行爬取,得到所述待掃描任務(wù)入口 URL下的所有子鏈接。
3.根據(jù)權(quán)利要求2所述的系統(tǒng),其特 征在于, 所述待爬取消息隊(duì)列,還用于當(dāng)爬蟲進(jìn)程對(duì)待掃描任務(wù)入口 URL進(jìn)行爬取的過程中,所述爬蟲進(jìn)程所在的機(jī)器出現(xiàn)故障時(shí),將所述爬蟲進(jìn)程正在爬取的任務(wù)消息的標(biāo)志位設(shè)置為等待處理。
4.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述爬蟲進(jìn)程,還用于依據(jù)得到的待掃描任務(wù)入口 URL的子鏈接生成爬蟲結(jié)果,將保存爬蟲結(jié)果的爬蟲結(jié)果文件保存到緩存服務(wù)器。
5.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述webserver在將生成的掃描任務(wù)發(fā)送給掃描進(jìn)程時(shí),具體包括: 依據(jù)數(shù)據(jù)庫中的子鏈接生成掃描任務(wù),每個(gè)掃描任務(wù)中包含的子鏈接的數(shù)量等于預(yù)設(shè)的任務(wù)鏈接數(shù); 依據(jù)每個(gè)掃描進(jìn)程一次只發(fā)送一個(gè)掃描任務(wù)的策略,將生成的掃描任務(wù)返回給請(qǐng)求掃描任務(wù)的掃描進(jìn)程; 將掃描任務(wù)中子鏈接在數(shù)據(jù)庫中的標(biāo)志位設(shè)置為正在掃描。
6.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述掃描進(jìn)程在對(duì)收到的子鏈接進(jìn)行漏洞掃描時(shí),具體包括: 從掃描任務(wù)中第一個(gè)子鏈接的第一個(gè)參數(shù)開始,將規(guī)則庫中的參數(shù)值作為子鏈接中參數(shù)的參數(shù)值輸入到子鏈接中,如果輸入后報(bào)出漏洞則終止對(duì)所述參數(shù)的掃描,對(duì)所述子鏈接的其他參數(shù)進(jìn)行掃描,對(duì)所述子鏈接的所有參數(shù)掃描完畢后,對(duì)掃描任務(wù)中的其他子鏈接進(jìn)行掃描。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述webserver,還用于在等待超時(shí)時(shí)間內(nèi)沒有收到掃描進(jìn)程發(fā)送的確認(rèn)完成信息時(shí),將子鏈接在數(shù)據(jù)庫中的標(biāo)志位設(shè)置為等待分配。
8.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于, 該系統(tǒng)還包括:停止掃描接口 ; 所述消息服務(wù)器還包括停止爬取消息隊(duì)列和停止掃描消息隊(duì)列; 停止掃描接口,用于前端界面的停止任務(wù)按鈕被觸發(fā)后,判斷所述掃描任務(wù)處于爬取過程還是掃描過程;如果所述掃描任務(wù)處于爬取過程,將生成的停止爬取消息發(fā)送到消息服務(wù)器的停止爬取消息隊(duì)列;爬蟲進(jìn)程用于從停止爬取消息隊(duì)列監(jiān)聽到停止爬取消息時(shí),終止所述掃描任務(wù)的爬取操作; 如果掃描任務(wù)處于掃描過程,停止掃描接口用于將生成的停止掃描消息發(fā)送到停止掃描消息隊(duì)列,掃描監(jiān)聽進(jìn)程用于從停止掃描消息隊(duì)列監(jiān)聽到停止掃描消息時(shí),如果掃描任務(wù)的子鏈接還沒有被分配到掃描進(jìn)程,則將所述子鏈接設(shè)置為停止掃描;如果所述子鏈接已經(jīng)被分配到掃描進(jìn)程,則不停止所述子鏈接的掃描。
9.一種實(shí)現(xiàn)安全掃描的方法,其特征在于,開始任務(wù)接口將生成的任務(wù)消息上傳到待爬取消息隊(duì)列;爬蟲進(jìn)程依據(jù)在所述待爬取消息隊(duì)列中監(jiān)聽到的任務(wù)消息中的待掃描任務(wù)入口 URL,得到所述待掃描任務(wù)入口 URL下的子鏈接,并發(fā)送掃描消息給待掃描消息隊(duì)列;掃描監(jiān)聽進(jìn)程在待掃描消息隊(duì)列監(jiān)聽到所述掃描消息時(shí),將所述子鏈接存儲(chǔ)到數(shù)據(jù)庫;該方法包括: web server收到掃描進(jìn)程發(fā)送的http請(qǐng)求后,依據(jù)數(shù)據(jù)庫存儲(chǔ)的子鏈接生成掃描任務(wù),將生成的掃描任務(wù)返回給掃描進(jìn)程; 掃描進(jìn)程對(duì)收到的子鏈接進(jìn)行漏洞掃描,出現(xiàn)漏洞時(shí)生成漏洞數(shù)據(jù),并依據(jù)漏洞數(shù)據(jù)生成掃描結(jié)果。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,爬蟲進(jìn)程得到所述待掃描任務(wù)入口URL下的子鏈接的方法為: 爬蟲進(jìn)程對(duì)待爬取消息隊(duì)列進(jìn)行監(jiān)聽,第一個(gè)監(jiān)聽到任務(wù)消息的爬蟲進(jìn)程獲取所述任務(wù)消息,并在所述待爬取消息隊(duì)列中將所述任務(wù)消息的標(biāo)志位設(shè)置為正在處理; 爬蟲進(jìn)程對(duì)所述任務(wù)消息中的待掃描任務(wù)入口 URL進(jìn)行爬取,得到所述待掃描任務(wù)入口 URL下的所有子鏈接。
11.根據(jù)權(quán)利要求10所述的方法,其特征在于,該方法還包括: 當(dāng)爬蟲進(jìn)程對(duì)待掃描任務(wù)入口 URL進(jìn)行爬取的過程中,所述爬蟲進(jìn)程所在的機(jī)器出現(xiàn)故障,待爬取消息隊(duì)列將所述爬蟲進(jìn)程正在爬取的任務(wù)消息的標(biāo)志位設(shè)置為等待處理。
12.根據(jù)權(quán)利要求9所述的方法,其特征在于,爬蟲進(jìn)程發(fā)送掃描消息給待掃描消息隊(duì)列之前,該方法還包括: 爬蟲進(jìn)程依據(jù)得到的待掃描任務(wù)入口 URL的子鏈接生成爬蟲結(jié)果,將保存爬蟲結(jié)果的爬蟲結(jié)果文件保存到緩存服務(wù)器。
13.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述webserver將生成的掃描任務(wù)發(fā)送給掃描進(jìn)程的方法為: 依據(jù)數(shù)據(jù)庫中的子鏈接生成掃描任務(wù),每個(gè)掃描任務(wù)中包含的子鏈接的數(shù)量等于預(yù)設(shè)的任務(wù)鏈接數(shù); 依據(jù)每個(gè)掃描進(jìn)程一次只發(fā)送一個(gè)掃描任務(wù)的策略,將生成的掃描任務(wù)返回給請(qǐng)求掃描任務(wù)的掃描進(jìn)程; 將掃描任務(wù)中子鏈接在數(shù)據(jù)庫中的標(biāo)志位設(shè)置為正在掃描。
14.根據(jù)權(quán)利要求9所述的方法,其特征在于,掃描進(jìn)程對(duì)收到的子鏈接進(jìn)行漏洞掃描的方法為: 掃描進(jìn)程從掃描任務(wù)中第一個(gè)子鏈接的第一個(gè)參數(shù)開始,將規(guī)則庫中的參數(shù)值作為子鏈接中參數(shù)的參數(shù)值輸入到子鏈接中,如果輸入后報(bào)出漏洞則終止對(duì)所述參數(shù)的掃描,對(duì)所述子鏈接的其他參數(shù)進(jìn)行掃描,對(duì)所述子鏈接的所有參數(shù)掃描完畢后,對(duì)掃描任務(wù)中的其他子鏈接進(jìn)行掃描。
15.根據(jù)權(quán)利要求14所述的方法,其特征在于,該方法還包括: 如果web server在等待超時(shí)時(shí)間內(nèi)沒有收到掃描進(jìn)程發(fā)送的確認(rèn)完成信息,則將子鏈接在數(shù)據(jù)庫中的標(biāo)志位設(shè)置為等待分配。
16.根據(jù)權(quán)利要求9所述的方法,其特征在于,該方法還包括: 當(dāng)前端界面的停止任務(wù)按鈕被觸發(fā)后,停止掃描接口判斷所述掃描任務(wù)處于爬取過程還是掃描過程; 如果所述掃描任務(wù)處于 爬取過程,將生成的停止爬取消息發(fā)送到消息服務(wù)器的停止爬取消息隊(duì)列,爬蟲進(jìn)程從停止爬取消息隊(duì)列監(jiān)聽到停止爬取消息時(shí),終止所述掃描任務(wù)的爬取操作; 如果掃描任務(wù)處于掃描過程,停止掃描接口將生成的停止掃描消息發(fā)送到停止掃描消息隊(duì)列,掃描監(jiān)聽進(jìn)程從停止掃描消息隊(duì)列監(jiān)聽到停止掃描消息時(shí),如果掃描任務(wù)的子鏈接還沒有被分配到掃描進(jìn)程,則將所述子鏈接設(shè)置為停止掃描;如果所述子鏈接已經(jīng)被分配到掃描進(jìn)程,則不停止所述子鏈接的掃描。
【文檔編號(hào)】H04L29/06GK103856467SQ201210518679
【公開日】2014年6月11日 申請(qǐng)日期:2012年12月6日 優(yōu)先權(quán)日:2012年12月6日
【發(fā)明者】李鳴雷, 王丹, 練坤梅 申請(qǐng)人:百度在線網(wǎng)絡(luò)技術(shù)(北京)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
新乡市| 沂水县| 怀化市| 唐海县| 若尔盖县| 元谋县| 平舆县| 二手房| 邵武市| 巫溪县| 华阴市| 庆安县| 邵武市| 秀山| 绥芬河市| 疏附县| 东乡族自治县| 平果县| 荆门市| 庐江县| 芷江| 连云港市| 墨江| 仁寿县| 辽源市| 荣昌县| 建宁县| 仁寿县| 长武县| 红河县| 修水县| 江达县| 织金县| 华蓥市| 衡山县| 晋中市| 永川市| 衢州市| 曲麻莱县| 铜鼓县| 长岛县|