多引擎網(wǎng)站安全檢測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
多引擎網(wǎng)站安全檢測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
多引擎網(wǎng)站安全檢測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
多引擎網(wǎng)站安全檢測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、多引擎網(wǎng)站安全檢測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)【摘要】多引擎網(wǎng)站安全檢測(cè)系統(tǒng)是在云安全日益深入人心,為人們所熟知,移動(dòng)互聯(lián)網(wǎng)日益深入生活的各個(gè)角落,而html5的發(fā)展,讓網(wǎng)站、云安全隨著移動(dòng)互聯(lián)網(wǎng)深入到生活的每個(gè)角落,影響我們?nèi)粘>W(wǎng)上購(gòu)物等各種服務(wù)而避免損失的一種解決云安全問題的方案。多引擎網(wǎng)站安全檢測(cè)系統(tǒng)借助多種網(wǎng)站檢測(cè)系統(tǒng),對(duì)網(wǎng)站進(jìn)行多引擎的安全檢測(cè),從而鑒定一個(gè)網(wǎng)站的安全性,讓你在訪問網(wǎng)站前知道網(wǎng)站的安全指標(biāo),避免對(duì)不安全網(wǎng)站的訪問,從而避免使用網(wǎng)站服務(wù)而造成損失。多引擎網(wǎng)站安全檢測(cè)系統(tǒng)通過(guò)任務(wù)調(diào)度系統(tǒng)、前端ui等的搭配設(shè)計(jì)以及展示,方便每個(gè)網(wǎng)民快捷鑒定網(wǎng)站安全,簡(jiǎn)單,易懂!【關(guān)鍵詞】 網(wǎng)站安全、云

2、安全、調(diào)度系統(tǒng)、安全檢測(cè)Design and Implementation of the multi-engine site security detection systemBased onTask scheduling system【Summary】Cloud security is growing in popularity, are well known, the mobile Internet deepening every corner of life, and the development of HTML5, website, cloud security with the m

3、obile Internet into every corner of life, affect our day-to-day online shoppingkinds of services. Multi-engine site security detection system to avoid the loss of a solution to the problem of cloud security program.Multi-engine site security detection systems use a variety of websites detection syst

4、em, multi-engine safety inspection of the site, in order to identify a sites security, to let you know the site before accessing the site safety indicators, to avoid access to unsafe websites,in order to avoid the loss of website services.Multi-engine site security detection system through task sche

5、duling system, front-end UI with design and display, to facilitate quick identification of each netizens site safe, simple, easy to understand!.【Keyword】 Site security、 cloud security、scheduling systems、 safety testing目 錄 TOC o 1-3 u 第一章引言 PAGEREF _Toc357269168 h 11.1項(xiàng)目背景 PAGEREF _Toc357269169 h 11.

6、2課題意義 PAGEREF _Toc357269170 h 12.1.1惡意網(wǎng)站 PAGEREF _Toc357269171 h 12.1.2 網(wǎng)站安全檢測(cè) PAGEREF _Toc357269172 h 2第二章系統(tǒng)環(huán)境 PAGEREF _Toc357269173 h 32.1前端環(huán)境 PAGEREF _Toc357269174 h 32.2調(diào)度環(huán)境 PAGEREF _Toc357269175 h 32.3 數(shù)據(jù)存儲(chǔ) PAGEREF _Toc357269176 h 4第三章 系統(tǒng)功能 PAGEREF _Toc357269177 h 53.1 系統(tǒng)需求 PAGEREF _Toc35726917

7、8 h 53.1.1查詢功能 PAGEREF _Toc357269179 h 53.1.2檢測(cè)功能 PAGEREF _Toc357269180 h 53.1.3重檢測(cè)功能 PAGEREF _Toc357269181 h 53.2系統(tǒng)特性 PAGEREF _Toc357269182 h 5第四章 系統(tǒng)設(shè)計(jì) PAGEREF _Toc357269183 h 64.1 文件結(jié)構(gòu) PAGEREF _Toc357269184 h 64.2 層次關(guān)系 PAGEREF _Toc357269185 h 7第五章 系統(tǒng)分層 PAGEREF _Toc357269186 h 85.1 前端UI PAGEREF _To

8、c357269187 h 85.1.1 文件結(jié)構(gòu) PAGEREF _Toc357269188 h 85.1.2 文件功能 PAGEREF _Toc357269189 h 85. 1.3 文件驅(qū)動(dòng) PAGEREF _Toc357269190 h 85.2 后端調(diào)度 PAGEREF _Toc357269191 h 95.2.1文件結(jié)構(gòu) PAGEREF _Toc357269192 h 95.2.2 文件功能 PAGEREF _Toc357269193 h 95.2.3 文件驅(qū)動(dòng) PAGEREF _Toc357269194 h 95.3 Worker PAGEREF _Toc357269195 h 1

9、05.3.1 文件結(jié)構(gòu) PAGEREF _Toc357269196 h 105.3.2 文件功能 PAGEREF _Toc357269197 h 105.3.3 文件驅(qū)動(dòng) PAGEREF _Toc357269198 h 11第六章 存儲(chǔ)設(shè)計(jì) PAGEREF _Toc357269199 h 126.1 Mongo任務(wù)結(jié)果存儲(chǔ)結(jié)構(gòu) PAGEREF _Toc357269200 h 126.2隊(duì)列存儲(chǔ)結(jié)構(gòu) PAGEREF _Toc357269201 h 136.2.1 任務(wù)狀態(tài) PAGEREF _Toc357269202 h 136.2.2 任務(wù)隊(duì)列 PAGEREF _Toc357269203 h 1

10、36.2.3 結(jié)果隊(duì)列 PAGEREF _Toc357269204 h 14第七章 邏輯策略與配置 PAGEREF _Toc357269205 h 147.1 通用配置 PAGEREF _Toc357269206 h 147.1.1 引擎 PAGEREF _Toc357269207 h 147.1.2 檢測(cè)結(jié)果顯示 PAGEREF _Toc357269208 h 157.2 woker配置 PAGEREF _Toc357269209 h 157.3 查詢邏輯 PAGEREF _Toc357269210 h 16第八章 運(yùn)行狀態(tài) PAGEREF _Toc357269211 h 178.1 前端U

11、I展示 PAGEREF _Toc357269212 h 178.1.1 首頁(yè) PAGEREF _Toc357269213 h 178.1.2 檢測(cè)結(jié)果 PAGEREF _Toc357269214 h 188.2 后端運(yùn)行 PAGEREF _Toc357269215 h 198.2.1 woker運(yùn)行 PAGEREF _Toc357269216 h 198.2.2 ui運(yùn)行 PAGEREF _Toc357269217 h 198.2.3 調(diào)度運(yùn)行 PAGEREF _Toc357269218 h 19第九章 總結(jié) PAGEREF _Toc357269219 h 20致 謝 PAGEREF _Toc

12、357269220 h 21參考文獻(xiàn) PAGEREF _Toc357269221 h 21附錄 PAGEREF _Toc357269222 h 22量化考核系統(tǒng)面向?qū)ο驨層架構(gòu)淺析多引擎網(wǎng)站安全檢測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) PAGE 2 PAGE 32引言項(xiàng)目背景隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)絡(luò)深入生活的每一部分。各種網(wǎng)站為我們提供著各種各樣的服務(wù),而這些服務(wù)包含有金錢交易的網(wǎng)上購(gòu)物等,同時(shí)這些服務(wù)中包含有各種惡意的網(wǎng)站提供的惡意服務(wù),不免有人上當(dāng)受騙而損失利益。有報(bào)告指出,釣魚網(wǎng)站造成中國(guó)經(jīng)濟(jì)年均300億的損失,而釣魚網(wǎng)站是惡意網(wǎng)站的其中一種。移動(dòng)互聯(lián)網(wǎng)更加日益深入生活的每個(gè)角落,隨著html5的發(fā)展,網(wǎng)站服

13、務(wù)更加替代手機(jī)應(yīng)用。所以開發(fā)多引擎網(wǎng)站安全檢測(cè)系統(tǒng)來(lái)進(jìn)行網(wǎng)站安全的鑒定是有必要的。課題意義本課題試圖以多引擎網(wǎng)站安全檢測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)去闡釋:怎么去構(gòu)建一個(gè)多重系統(tǒng)的檢測(cè)系統(tǒng),實(shí)現(xiàn)對(duì)惡意網(wǎng)站問題的解決;通過(guò)調(diào)度系統(tǒng)等,實(shí)現(xiàn)整體系統(tǒng)的良好體驗(yàn),更快、更簡(jiǎn)單的對(duì)網(wǎng)站進(jìn)行多引擎安全檢測(cè)。2.1.1惡意網(wǎng)站傳統(tǒng)上來(lái)說(shuō),惡意網(wǎng)站用作一個(gè)集合名詞,指故意在計(jì)算機(jī)系統(tǒng)上執(zhí)行惡意任務(wù)的病毒、蠕蟲和特洛伊木馬的非法網(wǎng)站。這類網(wǎng)站通常都有一個(gè)共同特點(diǎn),他們通常情況下是以某種網(wǎng)頁(yè)形式可以讓人們正常瀏覽頁(yè)面內(nèi)容,同時(shí)非法獲取電腦里面的的各種數(shù)據(jù)。而隨著發(fā)展,當(dāng)前的惡意網(wǎng)站不單單是掛馬網(wǎng)站,還有含有釣魚欺詐、仿冒、違

14、規(guī)、惡意篡改等惡意網(wǎng)站。 釣魚網(wǎng)站通常是指?jìng)窝b成銀行及電子商務(wù)等網(wǎng)站,主要危害是竊取用戶提交的銀行帳號(hào)、密碼等私密信息。所謂“釣魚網(wǎng)站”是一種網(wǎng)絡(luò)欺詐行為,指不法分子利用各種手段,仿冒真實(shí)網(wǎng)站的URL地址以及頁(yè)面內(nèi)容,或者利用真實(shí)網(wǎng)站服務(wù)器程序上的漏洞在站點(diǎn)的某些網(wǎng)頁(yè)中插入危險(xiǎn)的HTML代碼,以此來(lái)騙取用戶銀行或信用卡賬號(hào)、密碼等私人資料。 所謂網(wǎng)頁(yè)掛馬,就是網(wǎng)絡(luò)犯罪分子(黑客)通過(guò)各種方式竊取到網(wǎng)站的控制權(quán)限,犯罪分子會(huì)在控制網(wǎng)站后向網(wǎng)頁(yè)中放置病毒木馬。當(dāng)網(wǎng)民訪問被植入病毒木馬的網(wǎng)頁(yè)時(shí),就有可能在沒有感覺的情況下,自動(dòng)將病毒下載到電腦中,導(dǎo)致電腦中毒。當(dāng)用戶電腦中毒后,犯罪分子可能就能一定程

15、度的控制受害網(wǎng)民電腦,竊取網(wǎng)民個(gè)人隱私信息。 網(wǎng)頁(yè)惡意篡改一般是網(wǎng)絡(luò)犯罪分子非法獲得受害網(wǎng)站控制權(quán)后,對(duì)網(wǎng)頁(yè)內(nèi)容進(jìn)行修改,可能包括:向網(wǎng)頁(yè)中植入木馬病毒、在網(wǎng)頁(yè)中發(fā)布虛假信息公告、向網(wǎng)頁(yè)中植入非法網(wǎng)站鏈接、對(duì)網(wǎng)頁(yè)中的交易信息進(jìn)行修改從而造成網(wǎng)絡(luò)釣魚欺詐等。網(wǎng)民訪問被惡意篡改的網(wǎng)頁(yè)后,可能使電腦中毒、遭受網(wǎng)絡(luò)釣魚欺詐等,造成如個(gè)人資料、各種用戶名密碼、即時(shí)通訊聊天記錄等的泄密。帶有惡意行為或者違反法律法規(guī)的都可以統(tǒng)稱為惡意網(wǎng)站,這是一個(gè)集合,而訪問這個(gè)集合中的網(wǎng)站都可能造成相關(guān)的損失。2.1.2 網(wǎng)站安全檢測(cè)網(wǎng)站安全檢測(cè),也稱網(wǎng)站安全評(píng)估、網(wǎng)站漏洞測(cè)試、Web安全檢測(cè)等。它是通過(guò)技術(shù)手段對(duì)網(wǎng)站進(jìn)

16、行漏洞掃描,檢測(cè)網(wǎng)頁(yè)是否存在漏洞、網(wǎng)頁(yè)是否掛馬、網(wǎng)頁(yè)有沒有被篡改、是否有欺詐網(wǎng)站等,提醒網(wǎng)站管理員及時(shí)修復(fù)和加固,保障web網(wǎng)站的安全運(yùn)行。網(wǎng)站的安全可以分為公眾安全以及網(wǎng)站自身安全。公眾安全則是通常所指的惡意網(wǎng)站行為,如釣魚欺詐等;而自身網(wǎng)站安全則是涵蓋網(wǎng)站漏洞安全、被黑等,而本課題的設(shè)計(jì)則針對(duì)可能對(duì)網(wǎng)民造成損失的網(wǎng)站公眾安全,就網(wǎng)站的惡意行為進(jìn)行檢測(cè)??傊?,網(wǎng)站安全檢測(cè)即對(duì)網(wǎng)站各方面的安全,不管是面向誰(shuí),也許是網(wǎng)民,也許是網(wǎng)站自身等整體的安全的一種技術(shù)檢測(cè)手段。當(dāng)然本課題只針對(duì)面對(duì)網(wǎng)民方面的安全檢測(cè)的設(shè)計(jì)與實(shí)現(xiàn)。系統(tǒng)環(huán)境 = 2.1 2.1前端環(huán)境本系統(tǒng)前端采用Web.Py+Uwsgi+N

17、ginx編寫。Web.py實(shí)現(xiàn)前端動(dòng)態(tài)展示,需要Python環(huán)境,而Nginx為web提供運(yùn)行環(huán)境,Uwsgi進(jìn)行統(tǒng)一管理和負(fù)載均衡。Web.py 是一個(gè)輕量級(jí)Python web框架,它簡(jiǎn)單而且功能大。Web.py是一個(gè)開源項(xiàng)目。該框架由美國(guó)作家、Reddit聯(lián)合創(chuàng)始人、RSS規(guī)格合作創(chuàng)造者、著名計(jì)算機(jī)黑客Aaron Swartz開發(fā)。Web.py目前已被很多家大型網(wǎng)站所使用。Web.py簡(jiǎn)單易學(xué),只要有掌握Web.py就非常容易Uwsgi 是一個(gè)快速的、純C語(yǔ)言開發(fā)的、自維護(hù)的、對(duì)開發(fā)者友好的 WSGI 服務(wù)器,旨在提供專業(yè)的 Python web應(yīng)用發(fā)布和開發(fā)。他能夠像Php-cgi一樣

18、監(jiān)聽同一端口,進(jìn)行統(tǒng)一管理和負(fù)載平衡通過(guò)Web.py+Uwsgi+Nginx的搭配實(shí)現(xiàn)前端良好的展示和用戶體驗(yàn)。也方便實(shí)現(xiàn)功能的開發(fā)。 = 2.1 2.2調(diào)度環(huán)境調(diào)度系統(tǒng)基于Python腳本語(yǔ)言以及Redis設(shè)計(jì)與實(shí)現(xiàn),并輔于Bash腳本,實(shí)現(xiàn)對(duì)任務(wù)的分配、執(zhí)行以及結(jié)果的回收。Python,是一種 HYPERLINK /view/125370.htm t _blank 面向?qū)ο?、直譯式 HYPERLINK /view/2561555.htm t _blank 計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,由 HYPERLINK /view/2975166.htm t _blank Guido van Rossum于19

19、89年底發(fā)明,第一個(gè)公開發(fā)行版發(fā)行于1991年。Python語(yǔ)法簡(jiǎn)捷而清晰,具有豐富和強(qiáng)大的類庫(kù)。它常被昵稱為 HYPERLINK /view/2993364.htm t _blank 膠水語(yǔ)言,它能夠很輕松的把用其他語(yǔ)言制作的各種模塊(尤其是 HYPERLINK /view/10075.htm t _blank C/ HYPERLINK /view/824.htm t _blank C+)輕松地聯(lián)結(jié)在一起。常見的一種應(yīng)用情形是,使用python快速生成程序的原型(有時(shí)甚至是程序的最終界面),然后對(duì)其中有特別要求的部分,用更合適的語(yǔ)言改寫,比如 HYPERLINK /view/96860.ht

20、m t _blank 3D游戲中的圖形渲染模塊,速度要求非常高,就可以用C+重寫。Redis是一個(gè)key-value HYPERLINK /view/51839.htm t _blank 存儲(chǔ)系統(tǒng)。和Memcached類似,它支持存儲(chǔ)的value類型相對(duì)更多,包括string(字符串)、list( HYPERLINK /view/549479.htm t _blank 鏈表)、set(集合)和zset(有序集合)。這些 HYPERLINK /view/675645.htm t _blank 數(shù)據(jù)類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原

21、子性的。在此基礎(chǔ)上,Redis支持各種不同方式的排序。與Memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是Redis會(huì)周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實(shí)現(xiàn)了master-slave(主從)同步。Redis 是一個(gè)高性能的key-value數(shù)據(jù)庫(kù)。 Redis的出現(xiàn),很大程度補(bǔ)償了 HYPERLINK /view/794242.htm t _blank memcached這類key/value存儲(chǔ)的不足,在部 分場(chǎng)合可以對(duì)關(guān)系數(shù)據(jù)庫(kù)起到很好的補(bǔ)充作用。它提供了Python,Ruby,Erlang,PHP客戶端,使用很方便。2.3 數(shù)據(jù)

22、存儲(chǔ)數(shù)據(jù)存儲(chǔ)根據(jù)編寫前端以及調(diào)度系統(tǒng)情況,持久存儲(chǔ)采用非關(guān)系型數(shù)據(jù)庫(kù)MongoDB,而隊(duì)列及任務(wù)信息采用Redis。MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。由C+語(yǔ)言編寫。旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。MongoDB是一個(gè)介于 HYPERLINK /view/68348.htm t _blank 關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bson格式,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型。MongoDB最大的特點(diǎn)是他支持的查詢語(yǔ)言非常強(qiáng)大,其語(yǔ)法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z(yǔ)言,幾乎可以實(shí)現(xiàn)

23、類似關(guān)系數(shù)據(jù)庫(kù)單表查詢的絕大部分功能,而且還支持對(duì)數(shù)據(jù)建立 HYPERLINK /view/262241.htm t _blank 索引。第三章 系統(tǒng)功能3.1 系統(tǒng)需求本系統(tǒng)主要提供網(wǎng)站的查詢、檢測(cè)功能以及重檢測(cè)功能。入口提供一個(gè)url,傳入后返回該url的安全檢測(cè)結(jié)果,具體為每個(gè)引擎一個(gè)安全檢測(cè)結(jié)果。3.1.1查詢功能輸入待檢測(cè)的url,ui展示返回該url在每個(gè)引擎中的安全檢測(cè)狀態(tài)以及檢測(cè)時(shí)間。3.1.2檢測(cè)功能檢測(cè)功能由查詢功能觸發(fā),當(dāng)進(jìn)行url的安全查詢的時(shí)候,如果數(shù)據(jù)庫(kù)中未存儲(chǔ)該url安全檢測(cè)結(jié)果或者結(jié)果不正常,則下發(fā)檢測(cè)任務(wù)對(duì)該url進(jìn)行檢測(cè)。3.1.3重檢測(cè)功能當(dāng)查詢返回結(jié)果顯

24、示的檢測(cè)時(shí)間較早,可能相對(duì)該url而言安全狀態(tài)已經(jīng)改變,用戶可以主動(dòng)重檢測(cè)該url。3.2系統(tǒng)特性系統(tǒng)設(shè)計(jì)特性包括以下幾個(gè)方面: = 1 * GB2 整體系統(tǒng)由調(diào)度系統(tǒng)、ui、數(shù)據(jù)存儲(chǔ)組成 = 2 * GB2 通過(guò)存儲(chǔ)結(jié)果以及檢測(cè)時(shí)間差限制來(lái)避免無(wú)用的多次重新檢測(cè) = 3 * GB2 通過(guò)重新檢測(cè)功能來(lái)重新檢測(cè)時(shí)間差較長(zhǎng)url,保證url檢測(cè)結(jié)果的時(shí)效性 = 4 * GB2 前端ui搭配后端調(diào)度,加快前端加載時(shí)間,優(yōu)化用戶體驗(yàn) = 5 * GB2 非關(guān)系數(shù)據(jù)結(jié)構(gòu),json結(jié)構(gòu),每個(gè)引擎存儲(chǔ)為一個(gè)子結(jié)構(gòu)第四章 系統(tǒng)設(shè)計(jì)本系統(tǒng)采取前端UI展示查詢,后端任務(wù)調(diào)度的方式。通過(guò)前端ui操作觸發(fā)后端任務(wù)調(diào)

25、度,進(jìn)行url的檢測(cè),數(shù)據(jù)存儲(chǔ),再提供前端ui展示。4.1 文件結(jié)構(gòu)設(shè)計(jì)系統(tǒng)框架時(shí)把前端ui、后端調(diào)度系統(tǒng)分為不同的模塊,其中后端調(diào)度系統(tǒng)采用小型的集群設(shè)計(jì),一臺(tái)調(diào)度機(jī),多臺(tái)Worker,調(diào)度機(jī)調(diào)度任務(wù),Worker執(zhí)行任務(wù)。如圖:圖4.1.1系統(tǒng)結(jié)構(gòu)圖前端UI:用戶可視化界面,系統(tǒng)功能提供服務(wù)頁(yè)面數(shù)據(jù)存儲(chǔ):檢測(cè)結(jié)果存儲(chǔ)Sched:調(diào)度機(jī),任務(wù)下發(fā),結(jié)果回收及存儲(chǔ)任務(wù)機(jī):保存任務(wù)隊(duì)列及檢測(cè)結(jié)果Woker集群:任務(wù)執(zhí)行4.2 層次關(guān)系. monitor monitor.sh recive.py send.py ui css images index.py js lib restart.sh st

26、atic templates url.py views.py woker config.py ctrl.sh _init_.py modules start.py worker.py圖4.2.1層次關(guān)系圖第五章 系統(tǒng)分層5.1 前端UI5.1.1 文件結(jié)構(gòu)UI css images index.py js lib restart.sh static templates url.py views.py圖5.1.1 UI文件結(jié)構(gòu)圖5.1.2 文件功能 css #靜態(tài)資源,風(fēng)格樣式文件存儲(chǔ)目錄 images #靜態(tài)資源,圖片存儲(chǔ)目錄 index.py #ui啟動(dòng)文件 js #靜態(tài)資源,js存儲(chǔ)陌路

27、lib #公共引用模塊存儲(chǔ)目錄 restart.sh #ui重啟bash腳本 templates #模板目錄 url.py #鏈接路由 views.py #視圖文件5. 1.3 文件驅(qū)動(dòng)由restart.sh啟動(dòng)或者重啟Uwsgi,Nginx一起為ui提供運(yùn)行環(huán)境;index.py為對(duì)應(yīng)Uwsgi的ui啟動(dòng)文件,與Uwsgi建立聯(lián)系。用戶訪問ui,由url.py鏈接路由分析url,分配執(zhí)行views.py視圖文件不同class事件,向模板傳入變量,返回模板,展示出用戶需要的ui。5.2 后端調(diào)度5.2.1文件結(jié)構(gòu)Monitor monitor.sh recive.py send.py圖5.2.

28、1 調(diào)度文件結(jié)構(gòu)圖5.2.2 文件功能 monitor.sh #調(diào)度監(jiān)視bash腳本,進(jìn)程被關(guān)閉后重啟 recive.py #任務(wù)結(jié)果接收器,寫數(shù)據(jù)庫(kù) send.py #任務(wù)發(fā)送器,發(fā)送任務(wù)到不同隊(duì)列5.2.3 文件驅(qū)動(dòng)monitor.sh加入crontab周期任務(wù),對(duì)接收器和發(fā)送器進(jìn)行周期監(jiān)控,當(dāng)發(fā)現(xiàn)兩者進(jìn)程被關(guān)閉,則重啟它們。recive.py接收器死循環(huán)訪問結(jié)果隊(duì)列,當(dāng)發(fā)現(xiàn)結(jié)果隊(duì)列有結(jié)果時(shí),將其從隊(duì)列取出,分析,存儲(chǔ)到數(shù)據(jù)庫(kù)。而send.py發(fā)送器死循環(huán)訪問任務(wù)隊(duì)列,任務(wù)隊(duì)列任務(wù)由前端ui觸發(fā)添加,發(fā)送發(fā)現(xiàn)任務(wù)隊(duì)列有任務(wù),則發(fā)送到不同引擎的任務(wù)隊(duì)列中,并為該任務(wù)建立狀態(tài),方便前端取任務(wù)狀

29、態(tài)。5.3 Worker5.3.1 文件結(jié)構(gòu)Worker config.py ctrl.sh _init_.py modules fse.py gsb.py hfn.py _init_.py jsd.py jsu.py mcf.py ntn.py rix.py spa.py spt.py wsg.py zeu.py start.py worker.py圖5.3.1 Worker文件結(jié)構(gòu)圖5.3.2 文件功能. config.py #worker配置文件,配置隊(duì)列服務(wù)器、worker啟動(dòng)數(shù)量等 ctrl.sh #worker啟動(dòng)bash文件 _init_.py modules #引擎目錄 fse

30、.py #引擎模塊文件 gsb.py hfn.py _init_.py jsd.py jsu.py mcf.py ntn.py rix.py spa.py spt.py wsg.py zeu.py start.py #啟動(dòng)調(diào)用文件 worker.py #woker調(diào)用器5.3.3 文件驅(qū)動(dòng) 由ctrl.sh調(diào)用start.py啟動(dòng)woker.py,woker調(diào)用器分別訪問不同引擎任務(wù)隊(duì)列,取任務(wù)給不同的引擎,并回收不同引擎的任務(wù)結(jié)果寫入結(jié)果隊(duì)列。第六章 存儲(chǔ)設(shè)計(jì)6.1 Mongo任務(wù)結(jié)果存儲(chǔ)結(jié)構(gòu) db.result.findOne() _id : ObjectId(515adca776bc8d

31、2253d5972f),check_time:ISODate(2013-04-03T03:04:02Z) result : gsb : c_result : error, c_time : ISODate(2013-04-03T03:01:02Z) , jsd : c_result : safe, c_time : ISODate(2013-04-03T03:04:02Z) , jsu : c_result : safe, c_time : ISODate(2013-04-03T04:01:02Z) , mcf : c_result : unknown, c_time : ISODate(20

32、13-04-03T03:07:02Z) , ntn : c_result : warning, c_time : ISODate(2013-04-03T03:02:02Z) , rix : c_result : danger, c_time : ISODate(2013-04-03T02:01:02Z) , url : 6.2隊(duì)列存儲(chǔ)結(jié)構(gòu)6.2.1 任務(wù)狀態(tài) r.hgetall()code: 0, create_time: 1365158514, task_statu: 0說(shuō)明:code:檢測(cè)進(jìn)度(0-最大引擎數(shù))task_statu:0/1(標(biāo)識(shí)是否完成)create_time: 創(chuàng)建時(shí)間,

33、時(shí)間戳格式6.2.2 任務(wù)隊(duì)列 r.lrange(task.list/task.engine.*,0,-1)url: u, create_time: 1365158318, codeurl: u, url: u, create_time: 1365158332, codeurl: u說(shuō)明:url:原urlcodeurl:urldencode后的urlcreate_time: 創(chuàng)建時(shí)間,時(shí)間戳格式6.2.3 結(jié)果隊(duì)列 r.lrange(task.result,0,-1)c_time: datetime.datetime(2013, 4, 20, 20, 52, 3, 529770), resul

34、t:safe,codeurl: u,engine:gsb說(shuō)明:result:檢測(cè)結(jié)果codeurl:urldencode后的urlc_time: 創(chuàng)建時(shí)間,datetime格式engine:檢測(cè)引擎第七章 邏輯策略與配置7.1 通用配置7.1.1 引擎Engines = fse:F-Secure Browsing Protection,gsb:谷歌安全瀏覽,hfn:hpHosts,jsd:金山下載網(wǎng)址檢測(cè),jsu:金山釣魚網(wǎng)址檢測(cè),mcf:McAfee SiteAdvisor,ntn:諾頓網(wǎng)頁(yè)安全,rix:瑞星卡卡網(wǎng)站吧,spa:The Spamhaus Project,spt:SpyEye

35、Tracker,wsg:Web Security Guard,zeu:ZeuS Tracker,7.1.2 檢測(cè)結(jié)果顯示Safe_type = safe:安全,danger:危險(xiǎn),warning:警告,unknown:未知,error:未知,ing:檢測(cè)中,7.2 woker配置workers = fse:num:1,timeout:60,gsb:num:1,timeout:60,hfn:num:1,timeout:60,jsd:num:1,timeout:60,jsu:num:1,timeout:60,mcf:num:1,timeout:60,ntn:num:1,timeout:60,rix

36、:num:1,timeout:60,spa:num:1,timeout:60,spt:num:1,timeout:60,wsg:num:1,timeout:60,zeu:num:1,timeout:60,說(shuō)明:Num:當(dāng)前機(jī)器該引擎woker啟動(dòng)數(shù)Timeout:引擎檢測(cè)超時(shí)7.3 查詢邏輯圖7.3.1 查詢邏輯流程圖第八章 運(yùn)行狀態(tài)8.1 前端UI展示8.1.1 首頁(yè)圖8.1.1 前端UI首頁(yè)展示效果圖首頁(yè)訪問地址: site.so8.1.2 檢測(cè)結(jié)果圖8.1.2 前端UI查詢結(jié)果效果圖結(jié)果展示頁(yè)地址: HYPERLINK site.so/report/ site.so/report/8.2

37、 后端運(yùn)行8.2.1 woker運(yùn)行圖8.2.1 后端Worker運(yùn)行進(jìn)程圖8.2.2 ui運(yùn)行圖8.2.2 后端UI運(yùn)行進(jìn)程圖8.2.3 調(diào)度運(yùn)行圖8.2.2 后端調(diào)度運(yùn)行進(jìn)程圖第九章 總結(jié)多引擎網(wǎng)站安全檢測(cè)系統(tǒng)通過(guò)幾個(gè)月來(lái)的設(shè)計(jì)與編碼,終于完成了。按照一開始的設(shè)計(jì),系統(tǒng)分為前端用戶界面以及后端的調(diào)度系統(tǒng)。從零開始到自己選擇語(yǔ)言,搭建系統(tǒng)環(huán)境,前端ui的設(shè)計(jì)以及編碼,再到后端調(diào)度系統(tǒng)的實(shí)現(xiàn),以及引擎的調(diào)研和編寫;從零開始,到現(xiàn)在完成整個(gè)系統(tǒng)的設(shè)計(jì),雖然整體系統(tǒng)可能不夠成熟,但這次的畢業(yè)設(shè)計(jì)讓自己更深入的學(xué)會(huì)了系統(tǒng)的設(shè)計(jì)。前端ui通過(guò)css+js方式進(jìn)行模板的設(shè)計(jì),使用web.py進(jìn)行解析,實(shí)

38、現(xiàn)了良好的展示,加上uwsgi進(jìn)行均衡,實(shí)現(xiàn)前端ui的穩(wěn)定性和良好用戶體驗(yàn)。后端的調(diào)度系統(tǒng)采用自己在公司里最常用的Redis作為隊(duì)列存儲(chǔ),借用Redis的優(yōu)勢(shì),以及非關(guān)系型數(shù)據(jù)庫(kù)MongoDB進(jìn)行數(shù)據(jù)的存儲(chǔ),通過(guò)兩者的優(yōu)勢(shì)也進(jìn)一步實(shí)現(xiàn)系統(tǒng)的穩(wěn)定性和良好的設(shè)計(jì)。而在url檢測(cè)上,放棄了即時(shí)檢測(cè),同時(shí)也沒有了即時(shí)檢測(cè)的各種問題,如超時(shí),引擎數(shù)限制等情況導(dǎo)致的ui展示的各種問題,把前端執(zhí)行的代碼放到后端,保障前端良好用戶體驗(yàn)的同時(shí),也保障了任務(wù)檢測(cè)成功率以及整個(gè)系統(tǒng)的穩(wěn)定性。總的來(lái)說(shuō),通過(guò)一些邏輯以及策略的設(shè)計(jì),通過(guò)前端ui以及后端調(diào)度的配置,整個(gè)系統(tǒng)應(yīng)該能良好的運(yùn)行,也方便擴(kuò)展,可以是一臺(tái)服務(wù)器,

39、可以是一個(gè)集群,保證整個(gè)服務(wù)的安全、穩(wěn)定、可拓展。致 謝感謝我們的主任夏永恒老師,在他的主持和審批下才有這個(gè)課題的開始。感謝我的導(dǎo)師潘靜紅老師,她工作的認(rèn)真嚴(yán)謹(jǐn)一直是我工作、學(xué)習(xí)中的榜樣;她人生態(tài)度上的努力、進(jìn)取一直影響著我。感謝導(dǎo)師在項(xiàng)目開發(fā)過(guò)程中的支持和幫助。感謝福州大學(xué)工程技術(shù)學(xué)院的所有我認(rèn)識(shí)或不認(rèn)識(shí)的老師,是你們讓我有能力在我喜歡的職業(yè)道路上邁出第一步。感謝我的實(shí)習(xí)單位北京知道創(chuàng)宇信息技術(shù)有限公司,讓我有接觸、 學(xué)習(xí)業(yè)內(nèi)主流技術(shù)的機(jī)會(huì)和環(huán)境。感謝實(shí)習(xí)公司的副總裁、CTO楊冀龍,作為公司副總裁,親身進(jìn)行的幾次培訓(xùn)以及每次的鼓勵(lì)都讓我學(xué)到很多東西,充滿干勁;感謝部門總監(jiān)鐘晨鳴,他是一個(gè)好領(lǐng)

40、導(dǎo),也是一個(gè)好朋友,在他身上總感覺不到領(lǐng)導(dǎo)的樣子,但鼓勵(lì)、信任、培訓(xùn),從來(lái)不會(huì)少;感謝組長(zhǎng)陳業(yè)炫,公司里學(xué)到的大部分的技術(shù)都是他身上學(xué)到的,一個(gè)很強(qiáng)大的技術(shù)人員,一個(gè)很好的朋友;還有感謝其他的同事,跟大家一起學(xué)到很多東西,不只是技術(shù)上的不懈指導(dǎo),還有為人處事的各種道理;謝謝,謝謝大家!。論文即將完成,意味著我在學(xué)業(yè)上,我合格的畢業(yè)了。大學(xué)的功過(guò)是非都將過(guò)去,在以后的人生道路上、職業(yè)生涯中。我會(huì)更加的努力、認(rèn)真,一定做個(gè)合格的人、優(yōu)秀的程序員。最后,再次誠(chéng)摯、深切的感謝你們,謝謝。參考文獻(xiàn)Python核心編程(第二版) HYPERLINK /search/%5B%E7%BE%8E%5DWesle

41、y%20J.%20Chun%EF%BC%88%E9%99%B3%E4%BB%B2%E6%89%8D%EF%BC%89 美Wesley J. Chun(陳仲才)著 MongoDB官方文檔http:/docs.MongoDB.org/manual/Web.py官方文檔/cookbook/index.zh-cn Python官方文檔Uwsgi官方文檔http:/projects.unbit.it/uwsgi/以及其他來(lái)源于網(wǎng)絡(luò)的一切資料附錄一、核心代碼1、前端UI1)視圖(ui/views.py)#!/usr/bin/python#encoding=utf-8import webimport sys

42、import pymongoimport urllibimport datetimeimport timeimport redisfrom site import configfrom site.public import create_taskfrom fooying.retools import wwwfrom fooying.kslog import KSLOGreload(sys)sys.setdefaultencoding(utf-8)Db_mongo = pymongo.Connection(config.Mongo_ip, config.Mongo_port)Db_rds = r

43、edis.Redis(config.Redis_ip)Queue_rds = redis.Redis(config.Queue_redis_ip)Log = KSLOG(config.Log_path)Log_template = %(url)s- %(code)-%(messg)srender = web.template.render(templates/, cache=False)class index:def run(self):return render.index()def GET(self):return self.run()def POST(self):return self.

44、run()class report:def run(self, codeurl, newtask = False):#import pdb;pdb.set_trace()url = urllib.unquote(codeurl)if url.startswith(https:/):url = url7:len(url)if url.startswith(http:/):url = url6:len(url)codeurl = urllib.quote(url)if newtask and www.is_url_format(url):#判斷是否重新檢測(cè)stu = create_task(cod

45、eurl,url)return stu else:recheck = 0if not www.is_url_format(url):raise web.redirect(/)result_count = safe:0,warning:0,danger:0,unknown:0exist_job = Db_rds.hgetall(config.TASK_INFO+codeurl) #判斷是否舊版本數(shù)據(jù),如果是,加入調(diào)度print exist_jobif not exist_job or (exist_job.get(code,config.Engine_old_num) = config.Engi

46、ne_old_num and exist_job.get(task_statu,1) =1):create_task(codeurl,url,True)status = ingurl_result = else:recheck = 1db = Db_mongo.check_resulturl_result = db.result.find_one(url:codeurl)status = doneif not url_result:status = ingurl_result = create_task(codeurl,url,False)elif len(url_result.get(res

47、ult,) config.Engine_num:status = ingif exist_job and exist_job.get(task_statu,1) = 0:status = ingif url_result:result = url_result.get(result,)for i in result:e_result = result.get(i,)r = e_result.get(c_result,)if r = safe:result_countsafe += 1elif r = warning:result_countwarning += 1elif r = danger

48、:result_countdanger += 1else:result_countunknown += 1checktime = result.get(check_time,)if checktime:howlong = time.teime - time.mktime(checktime.timetuple()if howlong config.TASK_REPEAT_LIMIT:recheck = 0now = datetime.datetime.now().strftime(%Y-%m-%d %H:%M:%S)return render.report(url,url_result,con

49、fig.Engines,config.Safe_type,config.Engine_num,status,now,result_count,recheck)def GET(self, codeurl):return self.run(codeurl)def POST(self, codeurl):newtask = web.input().get(newtask,)return self.run(codeurl, newtask)2、后端調(diào)度1)任務(wù)回收(monitor/recive.py)#!/usr/bin/python#encoding=utf-8#by Fooying 2013/04

50、/18import syssys.path.append(/opt/)import redisimport pymongoimport datetimefrom site import config as a_configfrom site.public import create_taskfrom fooying.kslog import KSLOGDb_mongo = pymongo.Connection(a_config.Mongo_ip, a_config.Mongo_port)Db_rds = redis.Redis(a_config.Redis_ip)Queue_rds = red

51、is.Redis(a_config.Queue_redis_ip)Log = KSLOG(a_config.Send_log_path)Log_template = %(messg)sif _name_ = _main_:while True:try:task = Queue_rds.lrange(a_config.TASK_RESULT,0,1)if task:task = eval(task0)try:db = Db_mongo.check_resultresult = resultc_result = taskresultresultc_time = taskc_timecodeurl

52、= taskcodeurleng = taskenginedb.result.update(url:codeurl,$set:result.%s%eng:result,check_time:resultc_time,True)except Exception,e:messg = str(e)+-+str(task)Log.warning(Log_template%vars()else:Queue_rds.lpop(a_config.TASK_RESULT)except Exception,e:print emessg = str(e)Log.warning(Log_template%vars(

53、)2)任務(wù)下發(fā)(monitor/send.py)#!/usr/bin/python#encoding=utf-8#by Fooying 2013/04/18import syssys.path.append(/opt/)import redisfrom site import config as a_configfrom site.public import create_taskfrom fooying.kslog import KSLOGDb_rds = redis.Redis(a_config.Redis_ip)Queue_rds = redis.Redis(a_config.Queue

54、_redis_ip)Log = KSLOG(a_config.Send_log_path)Log_template = %(messg)sif _name_ = _main_:while True:try:task = Queue_rds.lrange(a_config.TASK_LIST,0,1)if task:task = eval(task0)try:for e in a_config.Engines:Queue_rds.rpush(a_config.TASK_ENGINE+e,task)except Exception,e:messg = str(e)Log.warning(Log_template%vars()else:Queue_rds.lpop(a_config.TASK_LIST)except Exception,e:print emessg = str(e)Log.warning(Log_template%vars()2、后端Worker1)啟動(dòng)腳本(worker/start.py)#!/usr/bin#encoding=utf-8#by Fooying 2013/04/18import configimport osif _name_ = _main_:for

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論