畢業(yè)設(shè)計(jì)基于網(wǎng)站的安全性研究與實(shí)現(xiàn)-論文_第1頁(yè)
畢業(yè)設(shè)計(jì)基于網(wǎng)站的安全性研究與實(shí)現(xiàn)-論文_第2頁(yè)
畢業(yè)設(shè)計(jì)基于網(wǎng)站的安全性研究與實(shí)現(xiàn)-論文_第3頁(yè)
畢業(yè)設(shè)計(jì)基于網(wǎng)站的安全性研究與實(shí)現(xiàn)-論文_第4頁(yè)
畢業(yè)設(shè)計(jì)基于網(wǎng)站的安全性研究與實(shí)現(xiàn)-論文_第5頁(yè)
已閱讀5頁(yè),還剩35頁(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)介

畢業(yè)設(shè)計(jì)(論文)基于ASP網(wǎng)站的平安性研究與實(shí)現(xiàn)論文作者姓名:申請(qǐng)學(xué)位專業(yè):申請(qǐng)學(xué)位類別:論文提交日期:基于ASP網(wǎng)站的平安性研究與實(shí)現(xiàn)摘要網(wǎng)絡(luò)已經(jīng)影響到社會(huì)的政治、經(jīng)濟(jì)、文化、軍事和社會(huì)生活各個(gè)方面。以網(wǎng)絡(luò)方式獲取信息和交流已成為現(xiàn)代信息社會(huì)的一個(gè)重要特征。人們?cè)L問(wèn)網(wǎng)絡(luò)獲取信息最直接的方式就是通過(guò)登錄和訪問(wèn)網(wǎng)站,以獲取可靠的信息。當(dāng)今大多數(shù)網(wǎng)站使用的是ASP,用戶在登錄以及存儲(chǔ)個(gè)人信息時(shí)存在著不少平安隱患,因此,本設(shè)計(jì)是對(duì)ASP網(wǎng)站平安性做出進(jìn)一步的判斷和強(qiáng)化,最大限度的做到保護(hù)用戶信息的完整性和保密性,主要涉及到用戶信息的加密解密、防SQL注入式攻擊的平安模塊,另外針對(duì)ASP網(wǎng)站的一些漏洞提出一些平安輔助性設(shè)計(jì)和平安配置。本文對(duì)上述平安模塊設(shè)計(jì)和平安性輔助設(shè)計(jì)做出了詳細(xì)的說(shuō)明。關(guān)鍵詞:ASP;加密;解密;防SQL注入TheSecurityStudyandImplementBasedonASPWebsiteAbstractNetworkhasaffectedthepolity,economy,culture,militaryandeachaspectofsociallife.Ithasbecomeanimportantfeatureofmodernsocietytoobtaininformationandexchangebytheuseofnetwork.Whenpeopleaccessinformation,themostdirectwayisloggingonandsurfingintheInternettoobtainreliableinformation.TodaymostofwebsitesareusingtheASP.Whenusersareloggingonandstoringpersonalinformation,therearemanyhiddensecurityproblems.SothisdesignwillmakefurtherjudgmentandaggrandizementonASPwebsites’security.Itwilldothebesttoprotecttheintegrityofuserinformationandconfidentiality.Itismainlyrelatedtotheencryptionanddecryptionofusers’information,anddefenseofSQLinjectionattack.Inaddition,someauxiliarydesignsandsecurityconfigurationaremadeforsomeloopholesoftheASPwebsite.Thepaperdescribesthedesignofthesecuritymoduleandsubordinatesecuritymodulesindetail.Keywords:ASP;encryption;decryption;defenseSQLinjection目錄論文總頁(yè)數(shù):30頁(yè)1 引言 11.1 課題背景 11.2 國(guó)內(nèi)外研究現(xiàn)狀 11.3 本課題研究的目的 11.4 本課題的研究方法 12 開(kāi)發(fā)技術(shù)和環(huán)境 22.1 RSA加密算法 22.1.1RSA加密算法的開(kāi)展 22.1.2RSA加密算法的描述 22.1.3RSA加密算法的可行性 22.2 ASP技術(shù) 22.2.1ASP技術(shù)的原理 22.2.2ASP技術(shù)的含義 32.2.3ASP技術(shù)的特點(diǎn) 32.3 結(jié)構(gòu)化查詢語(yǔ)言SQL 32.3.1SQL語(yǔ)言的特點(diǎn) 42.3.2SQL語(yǔ)言的組成 42.4 開(kāi)發(fā)環(huán)境 43 需求分析 43.1 用戶需求 43.2 功能需求 43.2.1用戶注冊(cè)模塊 53.2.2用戶登錄模塊 53.2.3防SQL注入模塊 53.3 性能要求 63.3.1操作性能 63.3.2調(diào)用性能 64 平安模塊的設(shè)計(jì)與實(shí)現(xiàn) 64.1 平安模塊的實(shí)現(xiàn)過(guò)程 64.1.1注冊(cè)加密模塊實(shí)現(xiàn)過(guò)程 64.1.2防注入模塊實(shí)現(xiàn)過(guò)程 74.1.3登錄圖片驗(yàn)證碼的實(shí)現(xiàn)過(guò)程 74.2 模塊流程圖和功能圖 74.2.1注冊(cè)加密模塊流程圖和功能圖 74.2.2登錄平安模塊流程圖及功能圖 94.3 模塊主要代碼及實(shí)現(xiàn) 114.3.1注冊(cè)模塊的平安代碼及實(shí)現(xiàn) 114.3.2登錄及防注入模塊的平安代碼及實(shí)現(xiàn) 185 現(xiàn)有平安技術(shù)歸納總結(jié) 225.1 SQL數(shù)據(jù)庫(kù)的平安性 225.2 IIS的平安配置 225.3 關(guān)閉沒(méi)有用的效勞和協(xié)議 235.4 ASP編程平安 235.5 ASP效勞器的平安設(shè)置 245.6 ASP木馬 245.7 防止暴力破解 256 測(cè)試 256.1 測(cè)試環(huán)境 256.2 測(cè)試結(jié)果 256.2.1測(cè)試效果 266.2.2測(cè)試過(guò)程及結(jié)果 27結(jié)論 27參考文獻(xiàn) 28致謝 29聲明 30引言課題背景網(wǎng)站資源大體上是以電子數(shù)據(jù)的形式把文字、圖像、聲音、動(dòng)畫(huà)等多種形式的信息存貯在效勞器中,并通過(guò)計(jì)算機(jī)、網(wǎng)絡(luò)通信終端等方式再現(xiàn)出來(lái)的資源。隨著計(jì)算機(jī)應(yīng)用水平與網(wǎng)絡(luò)的不斷開(kāi)展,網(wǎng)站資源呈現(xiàn)出傳統(tǒng)資源所無(wú)法比較的優(yōu)勢(shì):信息的海量化、信息的交互性、共享性、時(shí)效性以及信息的平安性等。網(wǎng)站資源是通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)來(lái)訪問(wèn)的,而由于計(jì)算機(jī)網(wǎng)絡(luò)高度的互動(dòng)性和可變性,一定會(huì)產(chǎn)生一些人為和非人為的平安性問(wèn)題?,F(xiàn)在大多數(shù)網(wǎng)站都是用ASP編寫(xiě)而成的,而涉及這個(gè)領(lǐng)域的平安性問(wèn)題那么有待研究。國(guó)內(nèi)外研究現(xiàn)狀自進(jìn)入信息化時(shí)代以來(lái),網(wǎng)站資源迅速開(kāi)展,信息業(yè)的開(kāi)展帶動(dòng)了經(jīng)濟(jì)的開(kāi)展,但正是這點(diǎn)使得黑客技術(shù)日益公開(kāi)化、職業(yè)化,各種攻擊日益頻繁,病毒日益泛濫,網(wǎng)站平安事件日益增多,用戶的防范意識(shí)也同時(shí)迅速提高,使得市場(chǎng)需求大幅增加,刺激了國(guó)內(nèi)網(wǎng)站平安產(chǎn)品市場(chǎng)快速開(kāi)展。隨著國(guó)家對(duì)信息平安的逐年重視,電子政務(wù)、電信、銀行等國(guó)有大型企業(yè)信息化的實(shí)施,對(duì)網(wǎng)站平安市場(chǎng)開(kāi)展也起到了重要的推動(dòng)作用,國(guó)家在網(wǎng)站平安方面的投資有逐年增加的趨勢(shì),世界也對(duì)網(wǎng)站平安越來(lái)越重視,平安問(wèn)題必將迎來(lái)一場(chǎng)新的革命。本課題研究的目的現(xiàn)今,訪問(wèn)網(wǎng)站資源已是廣闊公眾的日常行為,作為一個(gè)計(jì)算機(jī)網(wǎng)絡(luò)用戶來(lái)說(shuō)要求信息是具有實(shí)效性和真實(shí)性的,因此網(wǎng)上信息的平安性和保密性是一個(gè)至關(guān)重要的話題,本設(shè)計(jì)主要是針對(duì)用戶信息的平安保密性、SQL注入式攻擊的有效防止方法做進(jìn)一步的研究,還有就是對(duì)于現(xiàn)今網(wǎng)站資源存在的一些平安漏洞做出相應(yīng)的研究和平安配置,到達(dá)促使ASP網(wǎng)站平安的目的。本設(shè)計(jì)的中心思想是幫合法的ASP網(wǎng)站做出幾個(gè)用于其平安的平安模塊,可以直接調(diào)用,其次是提出一些用于ASP網(wǎng)站的意見(jiàn),以用于增加其的平安性,到達(dá)ASP網(wǎng)站平安的目的。本課題的研究方法本課題總體思想是結(jié)合書(shū)本和實(shí)際對(duì)ASP網(wǎng)站平安性做出一些規(guī)劃性意見(jiàn),能直觀有效的看待現(xiàn)今網(wǎng)站平安的一些問(wèn)題所在;再者就是設(shè)計(jì)幾個(gè)用于ASP網(wǎng)站信息平安的模塊〔用于用戶注冊(cè)信息和客戶端非法參數(shù)提交進(jìn)行加密的RSA算法加密模塊、用戶登錄的圖片驗(yàn)證碼模塊和一種常見(jiàn)的防SQL注入模塊〕,使用戶可以直接調(diào)用,具有簡(jiǎn)潔方便的特性,以到達(dá)增強(qiáng)ASP網(wǎng)站平安性的目的。開(kāi)發(fā)技術(shù)和環(huán)境RSA加密算法2.1.1RSA加密算法的開(kāi)展RSA公開(kāi)密鑰加密算法是在20世紀(jì)70年代提出的,到現(xiàn)在已經(jīng)得到了廣泛認(rèn)可和應(yīng)用。到21世紀(jì),網(wǎng)絡(luò)或電子平安領(lǐng)域的各方面已經(jīng)開(kāi)展了較為完備的國(guó)際標(biāo)準(zhǔn)標(biāo)準(zhǔn),RSA加密算法作為最重要的公開(kāi)密鑰算法,在各領(lǐng)域得到了廣泛的應(yīng)用。2.1.2RSA加密算法的描述RSA算法可以描述如下:1、選取兩個(gè)保密的大素?cái)?shù)p和q,令n=p×q,Φ(n)=(p-1)(q-1),Φ(n)為n的歐拉函數(shù)值,也就是所說(shuō)的模;2、取與(p-1)×(q-1)互素的整數(shù)e,由方程d×e=1(mod(p-1)×(q-1))解出d;3、二元組(e,n)作為公開(kāi)密鑰,二元組(d,n)作為私有密鑰.<加密解密>b=aemodn,c=bdmodn(其中a為明文,c為密文)2.1.3RSA加密算法的可行性雖然RSA加密運(yùn)算的速度比較慢,但是在PC性能開(kāi)展越來(lái)越好的今天,對(duì)于幾千字節(jié)的數(shù)據(jù)進(jìn)行一次幾百位密鑰的RSA加密,所消耗的時(shí)間應(yīng)該是可以接受的。下面結(jié)合大數(shù)運(yùn)算程序的調(diào)試,從理論上簡(jiǎn)單的分析消耗時(shí)間。在一臺(tái)普通配置的PC機(jī)上對(duì)一個(gè)整數(shù)進(jìn)行冪模運(yùn)算,因?yàn)楣_(kāi)密鑰的e通常取的較小,所以指數(shù)取一個(gè)小整數(shù),比方C353,模一個(gè)70字節(jié)長(zhǎng)的整數(shù)(140位十六進(jìn)制,大數(shù)單元以線性組方式實(shí)現(xiàn),對(duì)應(yīng)到RSA算法中,這相當(dāng)于約560bit的n),調(diào)試一個(gè)函數(shù)測(cè)試,按初等數(shù)論中的知識(shí)對(duì)程序進(jìn)行算法優(yōu)化,最終在一臺(tái)配置為AMDAthron2800+,外頻333MHZ,物理內(nèi)存512MB的PC上測(cè)試需要約45毫秒時(shí)間。如果按這種速度,逐字節(jié)對(duì)1KB的數(shù)據(jù)進(jìn)行同樣的運(yùn)算,所消耗的時(shí)間理論上為45毫秒的1024倍即約45秒。這個(gè)時(shí)間并不是非常長(zhǎng)。ASP技術(shù)2.2.1ASP技術(shù)的原理ASP技術(shù)的原理首先是客戶端向效勞器端提出HTTP的請(qǐng)求,然后IIS接受其客戶斷提出的請(qǐng)求,隨后調(diào)用ASP引擎,由此得出相應(yīng)的ASP文件并且執(zhí)行JavaScript或VBScript,最后通ActiveX組件ADO訪問(wèn)數(shù)據(jù)庫(kù),然后根據(jù)數(shù)據(jù)庫(kù)的結(jié)果自動(dòng)生成HTML頁(yè)面直接去響應(yīng)客戶發(fā)出的的請(qǐng)求。其原理圖如圖1: 圖1ASP技術(shù)原理圖2.2.2ASP技術(shù)的含義1、Active:ASP運(yùn)用了微軟公司的ActiveX技術(shù),ActiveX技術(shù)是現(xiàn)在Microsoft軟件的一項(xiàng)重要根底,它采用封裝對(duì)象和程序調(diào)用對(duì)象的技術(shù),這樣可以簡(jiǎn)化編程以加強(qiáng)程序間合作。ASP本身封裝了一些根本的組件和常用組件,許多公司也開(kāi)發(fā)了很多實(shí)用組件。只要可以在效勞器上安裝這些組件,通過(guò)訪問(wèn)組件便可以快速地建立自己的WEB應(yīng)用。2、Server:ASP運(yùn)行在效勞器端,這樣就不必?fù)?dān)憂瀏覽器是否支持ASP所使用的編程語(yǔ)言。ASP的編程語(yǔ)言可以是VBScript和JavaScript。VBScript是VB的一個(gè)簡(jiǎn)集,會(huì)VB的人可以很方便的快速上手。然而Netscape瀏覽器不支持客戶端的VBScript,所以,看到的是ASP生成的HTML代碼,而不是ASP程序代碼。這樣就可以防止別人抄襲程序。2.2.3ASP技術(shù)的特點(diǎn)1、使用VBScript、JavaScript等簡(jiǎn)單易懂的腳本語(yǔ)言的同時(shí)結(jié)合HTML代碼,可迅速地完成網(wǎng)站的應(yīng)用程序。2、不用去編譯,容易編寫(xiě),可以在效勞器端直接執(zhí)行。3、與瀏覽器無(wú)關(guān),用戶端只需要使用可執(zhí)行HTML碼的瀏覽器,便可瀏覽ASP所設(shè)計(jì)的網(wǎng)頁(yè)內(nèi)容。ASP所使用的腳本語(yǔ)言VBScript和JavaScript均在WEB效勞器端執(zhí)行,用戶端的瀏覽器不需要執(zhí)行這些腳本語(yǔ)言。4、ASP可以與任何ActiveXscripting語(yǔ)言相容。除了可使用VBScript或JavaScript語(yǔ)言來(lái)設(shè)計(jì)外,還可以通過(guò)plug-in的方式,使用由第三方所提供的其他腳本語(yǔ)言。5、ASP的源程序不會(huì)被傳到客戶瀏覽器,因此可以防止所寫(xiě)的源程序被他人竊取和修改,這樣也就提高了程序的相對(duì)平安性。結(jié)構(gòu)化查詢語(yǔ)言SQLSQL全稱是“結(jié)構(gòu)化查詢語(yǔ)言(StructuredQueryLanguage)〞,最早的是IBM的圣約瑟研究實(shí)驗(yàn)室為其關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)SYSTEMR開(kāi)發(fā)的一種查詢語(yǔ)言,它的前身是SQUARE語(yǔ)言。SQL語(yǔ)言結(jié)構(gòu)簡(jiǎn)潔,功能強(qiáng)大,簡(jiǎn)單易學(xué),所以自從IBM公司1981年推出以來(lái),SQL語(yǔ)言,得到了廣泛的應(yīng)用。2.3.1SQL語(yǔ)言的特點(diǎn)1、一體化的語(yǔ)言風(fēng)格:此項(xiàng)包括數(shù)據(jù)庫(kù)的創(chuàng)立、更改、查詢、定義模式、查詢數(shù)據(jù)庫(kù)以及維護(hù)數(shù)據(jù)庫(kù)和平安控制等,為數(shù)據(jù)庫(kù)提供了良好的開(kāi)發(fā)環(huán)境。2、高度非過(guò)程化:在運(yùn)用SQL語(yǔ)言訪問(wèn)數(shù)據(jù)庫(kù)時(shí),用戶不必一步一步去告訴計(jì)算機(jī)怎么去工作,而是告訴它要完成什么,也就是說(shuō)可以直接交給系統(tǒng)由系統(tǒng)自動(dòng)去完成。3、語(yǔ)言簡(jiǎn)潔明了:SQL語(yǔ)言的命令不是很多且語(yǔ)法簡(jiǎn)單,是一種描述性語(yǔ)言,因此易學(xué)易懂。4、使用方式較多:SQL語(yǔ)言可以以命令方式交互使用,也可以嵌入到程序設(shè)計(jì)語(yǔ)言中使用。目前很多開(kāi)發(fā)工具都將SQL語(yǔ)言直接融入到自身的語(yǔ)言中,使用起來(lái)非常方便。2.3.2SQL語(yǔ)言的組成SQL語(yǔ)言按其功能,可分為以下幾個(gè)組成局部:1、數(shù)據(jù)定義語(yǔ)言:實(shí)現(xiàn)定義、修改和刪除數(shù)據(jù)庫(kù)對(duì)象的功能。2、數(shù)據(jù)操縱語(yǔ)言:實(shí)現(xiàn)查詢數(shù)據(jù)的功能。3、數(shù)據(jù)控制語(yǔ)言:實(shí)現(xiàn)控制用戶對(duì)數(shù)據(jù)庫(kù)的操作權(quán)限的功能。4、數(shù)據(jù)查詢語(yǔ)言:實(shí)現(xiàn)查詢數(shù)據(jù)庫(kù)的功能。開(kāi)發(fā)環(huán)境本設(shè)計(jì)的開(kāi)發(fā)環(huán)境為個(gè)人計(jì)算機(jī)一臺(tái),Windows2003系統(tǒng),SQLSERVER2000數(shù)據(jù)庫(kù)等相關(guān)軟件。需求分析用戶需求作為一個(gè)訪問(wèn)網(wǎng)站資源的用戶來(lái)說(shuō),個(gè)人信息的保密性和完整性是最重要的,進(jìn)而要求網(wǎng)站最大限度的平安。因此,首先需要設(shè)計(jì)出幾個(gè)基于ASP網(wǎng)站的平安模塊,其次是需要了解一些關(guān)于網(wǎng)站或數(shù)據(jù)庫(kù)平安的輔助說(shuō)明和一些平安配置問(wèn)題。要求可直接在ASP網(wǎng)站中調(diào)用這些模塊,并且具有實(shí)用、簡(jiǎn)潔的功能。功能需求系統(tǒng)功能主要包括以下幾個(gè)方面:一是用戶注冊(cè)加密信息,用戶注冊(cè)時(shí)用RSA算法加密后直接存入數(shù)據(jù)庫(kù);二是登錄模塊設(shè)計(jì),主要采用了驗(yàn)證碼技術(shù),從而可以防止不法用戶用軟件頻繁注冊(cè),頻繁發(fā)送不良信息等。三是防SQL注入模塊,是對(duì)客戶端提交的變量參數(shù)進(jìn)行仔細(xì)地檢測(cè)。對(duì)客戶端提交的變量進(jìn)行檢查以防止SQL注入,有各種方法,發(fā)現(xiàn)客戶端提交的參數(shù)中有“exec、insert、select、delete、from、update、count、user、add、net〞等用于SQL注入的常用字符時(shí),立即停止執(zhí)行ASP并給出警告信息或轉(zhuǎn)向出錯(cuò)頁(yè)面。本設(shè)計(jì)的用戶主要是針對(duì)合法的ASP網(wǎng)站,幫助他們實(shí)現(xiàn)網(wǎng)站平安性能。在使用時(shí)其可以直接調(diào)用本設(shè)計(jì)的平安模塊,到達(dá)用戶信息的完整性,保密性和不可否認(rèn)性。3.2.1用戶注冊(cè)模塊本模塊主要用于用戶注冊(cè)信息的平安性,用戶注冊(cè)時(shí)用RSA加密算法直接加密用戶信息存入數(shù)據(jù)庫(kù),用戶注冊(cè)信息包括用戶名、密碼、確認(rèn)密碼、聯(lián)系、郵箱、QQ、公司名稱和補(bǔ)充說(shuō)明。用戶注冊(cè)時(shí)如有填錯(cuò)注冊(cè)信息,那么轉(zhuǎn)入錯(cuò)誤頁(yè)面以引導(dǎo)用戶填寫(xiě)正確的注冊(cè)信息,比方密碼輸入不一致,QQ不為數(shù)字或郵箱格式輸入有錯(cuò)誤。如用戶填寫(xiě)所有信息均符合要求那么注冊(cè)成功,此模塊對(duì)用戶信息采用RSA加密算法進(jìn)行加密后存入數(shù)據(jù)庫(kù)。在數(shù)據(jù)庫(kù)里可看到亂碼的注冊(cè)信息,他人想通過(guò)數(shù)據(jù)庫(kù)查看用戶信息是不可行的,也就起到了保密的作用。3.2.2用戶登錄模塊此模塊采用圖片驗(yàn)證碼的形式以增強(qiáng)用戶登錄的平安性。所謂驗(yàn)證碼,就是將一串隨機(jī)產(chǎn)生的數(shù)字或符號(hào),生成一幅圖片,圖片里加上一些干擾象素,用戶肉眼識(shí)別其中的驗(yàn)證碼信息,輸入表單提交網(wǎng)站驗(yàn)證,驗(yàn)證成功后才能使用某項(xiàng)功能。驗(yàn)證碼一般放在會(huì)員注冊(cè)、留言本等所有客戶端提交信息的頁(yè)面,要提交信息,必須要輸入正確的驗(yàn)證碼,從而可以防止不法用戶用軟件頻繁注冊(cè),頻繁發(fā)送不良信息等。普通的客戶端交互,如留言本、會(huì)員注冊(cè)等僅是按照要求輸入內(nèi)容,但網(wǎng)上有很多攻擊軟件,如注冊(cè)機(jī),可以通過(guò)瀏覽WEB,掃描表單,然后在系統(tǒng)上頻繁注冊(cè),頻繁發(fā)送不良信息,造成不良的影響,或者通過(guò)軟件不斷的嘗試,盜取你的密碼。我們通過(guò)使用驗(yàn)證碼技術(shù),使客戶端輸入的信息都必須經(jīng)過(guò)驗(yàn)證,從而可以解決這個(gè)問(wèn)題,以到達(dá)相應(yīng)的平安目標(biāo)。3.2.3防SQL注入模塊本模塊是對(duì)客戶端提交的變量參數(shù)進(jìn)行仔細(xì)地檢測(cè)以防止SQL注入,當(dāng)發(fā)現(xiàn)客戶端提交的參數(shù)中有“exec、insert、select、delete、from、update、count、user、add、net〞等用于SQL注入的常用字符時(shí),立即停止執(zhí)行ASP并給出警告信息或轉(zhuǎn)向出錯(cuò)頁(yè)面,同時(shí)對(duì)客戶端提交的非法參數(shù)加密后存入數(shù)據(jù)庫(kù)。另外此模塊實(shí)現(xiàn)了RSA算法的解密功能,管理員在登錄后可查看解密了的非法注入信息,包括注入詳細(xì)信息和注入時(shí)間。性能要求3.3.1操作性能模塊應(yīng)當(dāng)操作比較簡(jiǎn)便,界面比較直觀,維護(hù)比較簡(jiǎn)便。管理員登錄后可很直觀的查看注入日志。3.3.2調(diào)用性能其他ASP網(wǎng)站用戶調(diào)用此模塊時(shí)應(yīng)簡(jiǎn)便快捷。平安模塊的設(shè)計(jì)與實(shí)現(xiàn)平安模塊的實(shí)現(xiàn)過(guò)程4.1.1注冊(cè)加密模塊實(shí)現(xiàn)過(guò)程一個(gè)網(wǎng)站的平安管理最主要的局部就是用戶個(gè)人信息的保密性和完整性,在此模塊中主要的調(diào)用RSA加密算法對(duì)用戶注冊(cè)的重要信息加密保存,用戶寫(xiě)入注信息時(shí)首先驗(yàn)證用戶信息格式的合法性,用戶信息輸入全為合法時(shí)調(diào)用RSA加密算法對(duì)其進(jìn)行加密后存入數(shù)據(jù)庫(kù)。先調(diào)用GENKEY()函數(shù)產(chǎn)生公鑰和私鑰和模,然后調(diào)用Encode(pStrMessage)對(duì)用戶信息進(jìn)行加密,生成的密文以亂碼的字符串存入數(shù)據(jù)庫(kù)。例如加密用戶名:加密過(guò)程:SetObjUserName=NewclsRSA以上為先定義1個(gè)clsRSA對(duì)象。CallObjUserName.GenKey()以上為取得隨機(jī)密鑰。LngKeyUserName1=ObjUserName.PublicKey'PublicKey以上為取得公鑰。LngKeyUserName2=ObjUserName.PrivateKey'PrivateKey以上為取得私鑰。LngKeyUserName3=ObjUserName.Modulus'Modulus以上為取得模。StrUserName=ObjUserName.Encode(userName)以上為將userName加密。最后將密文和生成的密鑰存入數(shù)據(jù)庫(kù)。此時(shí)整個(gè)加密過(guò)程完成。解密過(guò)程:把公鑰,私鑰,模從數(shù)據(jù)庫(kù)中讀出。ObjUserName=NewclsRSA以上為先定義1個(gè)clsRSA對(duì)象。ObjUserName.PublicKey=str1(1)設(shè)置公鑰。ObjUserName.PrivateKey=str1(1)以上為設(shè)置私鑰。ObjUserName.Modulus=str1(2)以上為設(shè)置模型密文。StrUserName=ObjUserName.Decode(UserName)以上為將userName解密。4.1.2防注入模塊實(shí)現(xiàn)過(guò)程防注入模塊的功能實(shí)現(xiàn)表達(dá)在注冊(cè)頁(yè)面上,當(dāng)客戶端提交非法信息進(jìn)行非法注入時(shí),系統(tǒng)會(huì)對(duì)客戶端提交的非法參數(shù)進(jìn)行加密,加密后存入數(shù)據(jù)庫(kù)。當(dāng)客戶端進(jìn)行非法注入時(shí),首先調(diào)用GENKEY()函數(shù)產(chǎn)生雙鑰和模,然后調(diào)用Encode(pStrMessage)對(duì)非法信息進(jìn)行加密,生成的密文存入數(shù)據(jù)庫(kù),管理員登錄時(shí)候調(diào)用Dncode(pStrMessage)進(jìn)行解密,通過(guò)瀏覽器顯示注入信息。4.1.3登錄圖片驗(yàn)證碼的實(shí)現(xiàn)過(guò)程用戶登錄時(shí)候登錄界面的GetSafeCode函數(shù)去調(diào)用function.asp頁(yè)面,這為了顯示整個(gè)隨機(jī)數(shù)字圖片,然后GetSafeCode函數(shù)又去調(diào)用Safecode.asp頁(yè)面,這是為了取得隨機(jī)數(shù)字圖片,并將隨機(jī)數(shù)字放入到Session會(huì)話中。Safecode.asp又使用canvas.asp來(lái)產(chǎn)生隨機(jī)圖片及其顏色,canvas.asp又使用font.asp來(lái)產(chǎn)生了產(chǎn)生隨機(jī)數(shù)及其字體。模塊流程圖和功能圖4.2.1注冊(cè)加密模塊流程圖和功能圖1、注冊(cè)加密模塊流程圖及說(shuō)明用戶進(jìn)行注冊(cè)時(shí)首先顯示注冊(cè)頁(yè)面,顯示為必須進(jìn)行填寫(xiě)的個(gè)人信息的對(duì)話框,包括ID、PASSWORD、TEL、QQ、E-mail等,此時(shí)用戶需輸入要注冊(cè)的個(gè)人信息,模塊會(huì)根據(jù)用戶輸入的合法性進(jìn)行檢測(cè),如有錯(cuò)誤輸入那么彈出對(duì)話框提示,用戶單擊“確定〞按鈕后返回輸入框重新輸入。所有信息判斷為合法時(shí)對(duì)其進(jìn)行加密并存入數(shù)據(jù)庫(kù),即注冊(cè)結(jié)束,流程圖如圖2:圖2注冊(cè)加密模塊流程圖2、注冊(cè)加密模塊實(shí)現(xiàn)圖及說(shuō)明注冊(cè)加密界面的實(shí)現(xiàn)由register.asp頁(yè)面表達(dá),注冊(cè)時(shí)需提交用戶名、密碼、確認(rèn)密碼、聯(lián)系、郵箱、QQ、公司名稱、補(bǔ)充說(shuō)明,實(shí)現(xiàn)如圖3:圖3注冊(cè)界面實(shí)現(xiàn)圖如用戶提交信息有錯(cuò)誤或未全部填寫(xiě)那么轉(zhuǎn)出信息提示,例如郵件地址不正確,那么提示為非法,實(shí)現(xiàn)如圖4:圖4錯(cuò)誤信息實(shí)現(xiàn)圖當(dāng)用戶注冊(cè)信息全為合法時(shí)候?qū)ζ溥M(jìn)行加密后存入數(shù)據(jù)庫(kù),如圖5:圖5注冊(cè)信息加密圖4.2.2登錄平安模塊流程圖及功能圖1、登錄平安模塊流程圖及說(shuō)明用戶登錄時(shí)首先進(jìn)入登錄界面,此時(shí)需要輸入用戶名和密碼,然后輸入隨機(jī)生成的驗(yàn)證碼,模塊會(huì)對(duì)用戶輸入信息進(jìn)行仔細(xì)的檢測(cè),看是否有非法字符輸入,如果有立即對(duì)非法數(shù)據(jù)進(jìn)行加密并存入數(shù)據(jù)庫(kù)后返回登錄界面。如是合法用戶信息,那么判斷是否為管理員,如是普通用戶可正常登錄并顯示無(wú)權(quán)查看注入信息,如是管理員登錄那么可直接查看解密了的注入日志,流程圖如圖6:開(kāi)始開(kāi)始進(jìn)入登錄界面判斷合法性用戶登錄判斷用戶權(quán)普通用戶登錄結(jié)束登錄后查看注入日志NY管理員普通用戶加密非法信息并返回加密非法信息并返回圖6登錄平安模塊流程圖2、登錄平安模塊功能圖及說(shuō)明登錄平安模塊界面由login.asp頁(yè)面表達(dá),登錄時(shí)需要提交合法的用戶名、密碼和注冊(cè)碼,實(shí)現(xiàn)如圖7:圖7登錄界面實(shí)現(xiàn)圖輸入非法的用戶名“select〞和密碼“1234567890〞,實(shí)現(xiàn)SQL非法注入,例如如圖8:圖8實(shí)現(xiàn)非法注入例如圖此時(shí)模塊檢測(cè)到用戶注冊(cè)信息含有非法字符自動(dòng)終止轉(zhuǎn)入錯(cuò)誤提示頁(yè)面,如圖9:圖9注入終止信息圖含有非法字符的注冊(cè)信息加密后存入數(shù)據(jù)庫(kù)文件中,如圖10:圖10非法信息加密圖管理員登錄查看注入日志〔包括解密了的用戶名和密碼,此外還包括確切的注入時(shí)間〕,如圖11:圖11非法注入信息解密圖模塊主要代碼及實(shí)現(xiàn)4.3.1注冊(cè)模塊的平安代碼及實(shí)現(xiàn)本模塊主要由register.asp來(lái)實(shí)現(xiàn),其主要平安代碼和實(shí)現(xiàn)如下:1、RSA加密解密代碼實(shí)現(xiàn)如下:ClassclsRSAPublicPrivateKeyPublicPublicKeyPublicModulusPublicSubGenKey()以上函數(shù)是獲取密鑰。DimlLngPhiDimqDimpRandomize Do Do '2randomprimarynumbers(0to1000) Do p=Rnd*1000\1 LoopWhileNotIsPrime(p) Do q=Rnd*1000\1 LoopWhileNotIsPrime(q) 'n=productof2primes Modulus=p*q\1 'randomdecryptor(2ton) PrivateKey=Rnd*(Modulus-2)\1+2 lLngPhi=(p-1)*(q-1)\1 PublicKey=Euler(lLngPhi,PrivateKey) LoopWhilePublicKey=0OrPublicKey=1 'Loopifwecan'tcrypt/decryptabyte LoopWhileNotTestCrypt(255)EndSubPrivateFunctionTestCrypt(ByRefpBytData)DimlStrCryptedlStrCrypted=Crypt(pBytData,PublicKey)TestCrypt=Crypt(lStrCrypted,PrivateKey)=pBytDataEndFunctionPrivateFunctionEuler(ByRefpLngPHI,ByRefpLngKey)DimlLngR(3)DimlLngP(3)DimlLngQ(3)DimlLngCounterDimlLngResultEuler=0lLngR(1)=pLngPHI:lLngR(0)=pLngKeylLngP(1)=0:lLngP(0)=1lLngQ(1)=2:lLngQ(0)=0lLngCounter=-1DoUntillLngR(0)=0lLngR(2)=lLngR(1):lLngR(1)=lLngR(0)lLngP(2)=lLngP(1):lLngP(1)=lLngP(0)lLngQ(2)=lLngQ(1):lLngQ(1)=lLngQ(0)lLngCounter=lLngCounter+1lLngR(0)=lLngR(2)ModlLngR(1)lLngP(0)=((lLngR(2)\lLngR(1))*lLngP(1))+lLngP(2)lLngQ(0)=((lLngR(2)\lLngR(1))*lLngQ(1))+lLngQ(2)LooplLngResult=(pLngKey*lLngP(1))-(pLngPHI*lLngQ(1))IflLngResult>0ThenEuler=lLngP(1)ElseEuler=Abs(lLngP(1))+pLngPHIEndIfEndFunctionPublicFunctionCrypt(pLngMessage,pLngKey)OnErrorResumeNextDimlLngModDimlLngResultDimlLngIndexIfpLngKeyMod2=0ThenlLngResult=1ForlLngIndex=1TopLngKey/2lLngMod=(pLngMessage^2)ModModulus'ModmayerroronkeygenerationlLngResult=(lLngMod*lLngResult)ModModulusIfErrThenExitFunctionNextElselLngResult=pLngMessageForlLngIndex=1TopLngKey/2lLngMod=(pLngMessage^2)ModModulusOnErrorResumeNext'ModmayerroronkeygenerationlLngResult=(lLngMod*lLngResult)ModModulusIfErrThenExitFunctionNextEndIfCrypt=lLngResultEndFunctionPrivateFunctionIsPrime(ByRefpLngNumber)DimlLngSquareDimlLngIndexIsPrime=FalseIfpLngNumber<2ThenExitFunctionIfpLngNumberMod2=0ThenExitFunctionlLngSquare=Sqr(pLngNumber)'SqrorlLngIndex=3TolLngSquareStep2IfpLngNumberModlLngIndex=0ThenExitFunctionNextIsPrime=TrueEndFunctionPublicFunctionEncode(ByValpStrMessage)以上函數(shù)為加密函數(shù)。DimlLngIndexDimlLngMaxIndexDimlBytAsciiDimlLngEncryptedlLngMaxIndex=Len(pStrMessage)IflLngMaxIndex=0ThenExitFunctionForlLngIndex=1TolLngMaxIndexlBytAscii=Asc(Mid(pStrMessage,lLngIndex,1))lLngEncrypted=Crypt(lBytAscii,PublicKey)Encode=Encode&NumberToHex(lLngEncrypted,4)NextEndFunctionPublicFunctionDecode(ByValpStrMessage)以上函數(shù)為解密函數(shù)。DimlBytAsciiDimlLngIndexDimlLngMaxIndexDimlLngEncryptedDataDecode=""ifpStrMessage<>""thenlLngMaxIndex=Len(pStrMessage)endifForlLngIndex=1TolLngMaxIndexStep4lLngEncryptedData=HexToNumber(Mid(pStrMessage,lLngIndex,4))lBytAscii=Crypt(lLngEncryptedData,PrivateKey)Decode=Decode&Chr(lBytAscii)NextEndFunctionPrivateFunctionNumberToHex(ByRefpLngNumber,ByRefpLngLength)NumberToHex=Right(String(pLngLength,"0")&Hex(pLngNumber),pLngLength)EndFunctionPrivateFunctionHexToNumber(ByRefpStrHex)HexToNumber=CLng("&h"&pStrHex)EndFunctionEndClass%>2、輸入注冊(cè)信息并判斷合法性的代碼如下:主要采用的JS驗(yàn)證<scripttype="text/javascript"><!—functionTrim(str) { returnstr.replace(/(^[\t]+)|([\t]+$)/g,""); }以上代碼實(shí)現(xiàn)了JS驗(yàn)證符號(hào)的功能。 functionValidateEmail(str) {varemailReg=/^([a-zA-Z0-9_\-\.\+]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/; returnemailReg.test(str); } 以上代碼實(shí)現(xiàn)了JS驗(yàn)證電子郵件的功能。 functioncheck(){ userName=Trim(document.getElementById("userName").value) if(userName.length<1){ alert("請(qǐng)?zhí)顚?xiě)用戶名!"); document.getElementById("userName").focus(); document.getElementById("userName").select(); returnfalse; }以上代碼實(shí)現(xiàn)了JS驗(yàn)證用戶名是否為空的功能。此外JS驗(yàn)證還驗(yàn)證了密碼是否為空、二次密碼是否為空、密碼是否超過(guò)了6位、兩次密碼是否相同、號(hào)碼是否為空、郵件是否為空、郵件格式是否正確、QQ是否為空、QQ是否為數(shù)字、公司名稱是否為空、補(bǔ)充說(shuō)明是否為空、補(bǔ)充說(shuō)明是否超過(guò)了500字,其原理和上述用戶名相同。如有注冊(cè)信息錯(cuò)誤,其效果如圖12所示:圖12錯(cuò)誤信息輸入效果圖3、將信息加密并存入數(shù)據(jù)庫(kù)代碼如下:<% ifrequest("check")="YES"then 上述代碼表示當(dāng)請(qǐng)求標(biāo)志“check〞驗(yàn)證成功后。 forsqlform() userName=Replace_Text(request("userName")) passWord=Replace_Text(request("PassWord")) yourTel=Replace_Text(request("yourTel")) yourEmail=Replace_Text(request("yourEmail")) yourQQ=Replace_Text(request("yourQQ")) yourName=Replace_Text(request("yourName")) txtContent=Replace_Text(request("txtContent"))以上代碼是將提交后在字段格式化后存入變量。 popedom=0以上表示權(quán)限為0。 messageType=1以上將信息類型設(shè)置為1。 SetObjUserName=NewclsRSA CallObjUserName.GenKey() LngKeyUserName1=ObjUserName.PublicKey'PublicKey forID=Replace_Text(LngKeyUserName1) LngKeyUserName2=ObjUserName.PrivateKey'PrivateKey LngKeyUserName3=ObjUserName.Modulus'Modulus StrUserName=ObjUserName.Encode(userName) str1=LngKeyUserName1&","&LngKeyUserName2&","&LngKeyUserName3 '密碼 SetObjPassWord=NewclsRSA CallObjPassWord.GenKey() LngKeyPassWord1=ObjPassWord.PublicKey LngKeyPassWord2=ObjPassWord.PrivateKey LngKeyPassWord3=ObjPassWord.Modulus StrPassWord=ObjPassWord.Encode(passWord) str2=LngKeyPassWord1&","&LngKeyPassWord2&","&LngKeyPassWord3其、電子郵件、QQ、公司名稱和補(bǔ)充說(shuō)明加密算法同上。 sqlOne="insertintoSearch(S1,S2,S3,S4,S5,S6,S7,FORID)values('"&str1&"','"&str2&"','"&str3&"','"&str4&"','"&str5&"','"&str6&"','"&str7&"','"&forID&"')以上代碼表示插入KEY的SQL命令。 sqlTwo="insertintoRegister(UserName,PassWord,YourTel,YourEmail,YourQQ,YourName,YourContent,Popedom,Type,DATEANDTIME,FORID)values('"&StrUserName&"','"&StrPassWord&"','"&StrYourTel&"','"&StrYourEmail&"','"&StrYourQQ&"','"&StrYourName&"','"&StrTxtContent&"',"&popedom&","&messageType&",'"&now()&"','"&forID&"')"以上代碼表示插入加密信息的SQL命令。 conn.execute(sqlTwo) conn.execute(sqlOne)以上代碼是將將加密后信息存入文檔。 response.Write"<fontcolor=#FF0000>注冊(cè)成功</font><ahref=login.asp>現(xiàn)在登錄</a>" conn.close setconn=nothing else %> <ahref="login.asp">返回登錄</a> <% Endif %> 4.3.2登錄及防注入模塊的平安代碼及實(shí)現(xiàn)1、檢驗(yàn)輸入合法性的代碼如下:〔1〕利用JS驗(yàn)證輸入格式是否正確利用JS驗(yàn)證輸入格式的原理與注冊(cè)模塊JS驗(yàn)證原理相同,故不再寫(xiě)入說(shuō)明。〔2〕驗(yàn)證是否為SQL注入ifrequest("check")="OK"then 'response.write(Replace_Text(request("passCode"))) 'response.end ifReplace_Text(request("passCode"))<>""then ifCint(Replace_Text(request("passCode")))<>Session("SafeCode")then response.write"<divalgin=centerwidth=300height=20

style=""font-size:12px;""><fontcolor=red><b>驗(yàn)證碼錯(cuò)誤,請(qǐng)重新輸入</b></font><br></div>" elseforsqlform()以上代碼主要是調(diào)用此函數(shù)將SQL代碼過(guò)濾出來(lái)并且保存?!?〕驗(yàn)證權(quán)限看是否能登錄查看SQL注入setrs=server.CreateObject("adodb.recordset") UserNameInput=Replace_Text(request("userName")) PassWordInput=Replace_Text(request("passWord")) sql="select*fromRegisterasr,Searchasswherer.FORID=s.FORIDand

r.[Type]=1" rs.opensql,conn,1,3 ifnot(rs.eofandrs.bof)then ifrs("Popedom")=1then dowhilenotrs.eof UserName=rs("UserName") PassWord=rs("PassWord") str1=split(rs("s1"),",") str2=split(rs("s2"),",") SetObjUserName=NewclsRSA ObjUserName.PrivateKey=str1(1) ObjUserName.Modulus=str1(2) StrUserName=ObjUserName.Decode(UserName) SetObjPassWord=NewclsRSA ObjPassWord.PrivateKey=str2(1) ObjPassWord.Modulus=str2(2) StrPassWord=ObjPassWord.Decode(PassWord) ifUserNameInput=StrUserNameand

PassWordInput=StrPassWordthenresponse.Redirect("Input.asp")

endif rs.movenext loop else response.Write("<divstyle=""font-size:12px;color:#FF0000;""

align=""center"">你無(wú)權(quán)查看注入信息</di>") endif endif endif2、查看注入日志的代碼和實(shí)現(xiàn)如下:主要的功能是先看登錄網(wǎng)頁(yè)者是否具有權(quán)限,然后將數(shù)據(jù)庫(kù)中信息解密并且顯示出來(lái),主要代碼如下:<%setrs=server.CreateObject("ADODB.Recordset")sql="SELECT*FROMRegisterasr,Searchasswherer.FORID=s.FORIDandr.[type]=0"以上代碼是從數(shù)據(jù)庫(kù)里查詢非法注入。rs.opensql,conn,1,3ifrs.eofthen response.write"<divstyle=""font-size:12px;""align=""center"">暫無(wú)非法注入日志!<ahref=""#""onclick=""history.back()"">返回</a></div>" response.endelse forsqlinjection()上一句代碼表示為過(guò)濾查詢中的sql。%><divalign="center"><ahref="loginNew.asp"target="_top"onClick="if(!window.confirm('你確認(rèn)退出嗎?'))returnfalse;">重新登錄</a></div><tablealign="center"width="30%"style='word-break:break-all;'border="1"bordercolor="#99CCFF"cellpadding="0"cellspacing="0"> <tbody> <tr><tdalign="left"valign="middle"width="100"colspan="5"height="30"><b>所有的注入信息</b></td></tr> <tr><tdwidth="30">編號(hào)</td><td></td><tdwidth="200">注入信息</td><td></td><tdwidth="150">注入時(shí)間</td></tr><% countId=1 whilenotrs.eof UserName=rs("UserName") PassWord=rs("PassWord") YourTel=rs("YourTel") YourEmail=rs("YourEmail") YourQQ=rs("YourQQ") YourName=rs("YourName") YourContent=rs("YourContent")以上代碼是讀出數(shù)據(jù)庫(kù)中信息。str1=split(rs("S1"),",") str2=split(rs("S2"),",") str3=split(rs("S3"),",") str4=split(rs("S4"),",") str5=split(rs("S5"),",") str6=split(rs("S6"),",") str7=split(rs("S7"),",") SetObjUserName=NewclsRSA ObjUserName.PrivateKey=str1(1) ObjUserName.Modulus=str1(2) StrUserName=ObjUserName.Decode(UserName)以上代碼是通過(guò)KEY取得用戶名〔其他信息讀取原理相同〕。%> <tr> <tdwidth="30"><%=countId%></td><td></td><tdwidth="200"> <%ifYourQQ<>""then%> 用戶:<%=StrUserName%><br> 密碼:<%=StrPassWord%><br> :<%=StrYourTel%><br> 電子郵件:<%=StrYourEmail%><br> QQ:<%=StrYourQQ%><br> 公司名稱:<%=StrYourName%><br> 補(bǔ)充說(shuō)明:<%=StrYourContent%><br> <%else%> 用戶:<%=StrUserName%><br> 密碼:<%=StrPassWord%><br>以上表示要顯示用戶名和密碼。 <%endif%> </td> <td></td><tdwidth="150"><%=rs("DATEANDTIME")%></td> </tr><% countId=countId+1 rs.movenext wend%> </tbody></table><%endif%><%rs.closeconn.closesetrs=nothingsetconn=nothing%></body></html>如有注入信息,其效果如圖13所示:圖13管理員查看注入日志效果圖現(xiàn)有平安技術(shù)歸納總結(jié)SQL數(shù)據(jù)庫(kù)的平安性SQLServer是一種比較廣泛使用的數(shù)據(jù)庫(kù),大多數(shù)商務(wù)網(wǎng)站和企業(yè)信息平臺(tái)都是使用此數(shù)據(jù)庫(kù)的,因此數(shù)據(jù)庫(kù)的平安性也顯的尤為重要。數(shù)據(jù)庫(kù)的平安漏洞和不合理的配置會(huì)造成嚴(yán)重的后果,除文中上述的防SQL注入模塊外,還要對(duì)其平安配置做進(jìn)一步探討。SQL相對(duì)來(lái)說(shuō)比較平安。但是也要小心地配置SQL:1、安裝數(shù)據(jù)庫(kù)管理中存在的風(fēng)險(xiǎn)SQL數(shù)據(jù)庫(kù)支持從遠(yuǎn)程進(jìn)行數(shù)據(jù)庫(kù)的維護(hù)。在安裝時(shí)可以選擇不安裝,安裝完成以后,還可以通過(guò)“SQLServerNetworkUtility〞來(lái)刪除遠(yuǎn)程管理。如果要使用遠(yuǎn)程管理,可以使用TCP/IP,并將缺省的端口1433改變?yōu)槠渌臄?shù)值。使用遠(yuǎn)程對(duì)于用戶來(lái)說(shuō)可能比較方便,但要注意一個(gè)黑客只要知道你的SQLserver密碼,就可以直接進(jìn)入你的數(shù)據(jù)庫(kù)。2、通過(guò)改變sa密碼表達(dá)平安性能在缺省安裝時(shí),SQL的sa賬號(hào)的密碼為空,建議用戶在在EnterpriseSERVER中改變sa的密碼以到達(dá)密碼的平安性。數(shù)據(jù)庫(kù)登錄的賬號(hào)不要寫(xiě)入ASP頁(yè)面中,以免受到泄露。IIS的平安配置做網(wǎng)站的同學(xué)可能深有體會(huì),IIS經(jīng)常會(huì)遇到一些麻煩,所以配置平安的IIS是尤為重要的:1、在C盤的下面有個(gè)Inetpub目錄,最好將其刪除,然后在其它盤下建立一個(gè)Inetpub目錄,在IIS管理中將主目錄指向X:\Inetpub(X代表盤符);2、把IIS安裝時(shí)默認(rèn)的scripts等虛擬目錄也全都刪除掉,如果用戶需要其他的什么權(quán)限可以以后再重新建立;3、關(guān)于應(yīng)用程序的配置:在IIS管理中把沒(méi)有用處的映射一概刪除。在IIS管理器中單擊右鍵“默認(rèn)WEB站點(diǎn)〞,然后單擊“屬性〞→“主目錄〞→“配置〞→“應(yīng)用程序映射〞,最后刪除掉這些映射。4、有一個(gè)應(yīng)用程序調(diào)試窗口,在這個(gè)窗口內(nèi),當(dāng)腳本錯(cuò)誤消息發(fā)出“發(fā)送文本錯(cuò)誤消息給客戶〞后單擊“確定〞,退出時(shí)讓虛擬站點(diǎn)繼承剛剛設(shè)定好的屬性。5、使用IIS的備份功能,把剛剛設(shè)置好的全部都備份一下,到達(dá)了可以隨時(shí)都可以恢復(fù)IIS平安配置的目的。此外IIS超負(fù)荷很有可能導(dǎo)致效勞器癱瘓,此時(shí)可以在性能中翻開(kāi)CPU限制選項(xiàng),將IIS的最大CPU使用率限制在70%-80%,到達(dá)了預(yù)防的目的。關(guān)閉沒(méi)有用的效勞和協(xié)議如今上網(wǎng)的用戶如果沒(méi)有注意會(huì)在使用網(wǎng)絡(luò)資源時(shí)候開(kāi)啟大量沒(méi)有用的效勞,因此盡量少開(kāi)沒(méi)用到的效勞是網(wǎng)絡(luò)平安的一大準(zhǔn)那么。譬如開(kāi)啟了某個(gè)效勞,就要面對(duì)不少的漏洞困擾,更重要的是你還要時(shí)時(shí)提防未來(lái)的由這個(gè)效勞所引起的漏洞。比方,如果不需要使用ftp,就直接把它關(guān)了,這樣就不會(huì)浪費(fèi)精力甚至金錢去應(yīng)付那些緩沖區(qū)溢出之類的漏洞。如果你的IIS安裝了indexserver效勞,那就得至少要面對(duì)三個(gè)以上的有關(guān)這個(gè)效勞的漏洞,因此如果你沒(méi)用到indexserver效勞,也可以去刪除它.一個(gè)道理,我們要安裝盡量最少的協(xié)議。還有就是千萬(wàn)不要安裝點(diǎn)對(duì)點(diǎn)通道通訊協(xié)議。此外,還必須小心地配置TCP/IP協(xié)議。在TCP/IP的屬性頁(yè)中選擇“IP地址〞工程,然后選擇“高級(jí)〞。在彈出來(lái)的對(duì)話框中選擇“平安機(jī)制〞,這樣你可以禁止UDP,然后開(kāi)啟IP端口6和TCP端口80。ASP編程平安網(wǎng)絡(luò)平安的話題已成為當(dāng)今流行的一種趨勢(shì),因此平安職責(zé)不僅是網(wǎng)絡(luò)管理員的職責(zé),更是編程人員的一種職責(zé),所以必須養(yǎng)成良好的編程習(xí)慣,否那么,會(huì)給不法分子造成可乘之機(jī)。目前,大多數(shù)網(wǎng)站上的ASP程序有各種平安漏洞,但如果書(shū)寫(xiě)程度時(shí)多加注意的話,有些漏洞是可以防止的。關(guān)于用戶名與口令的程序應(yīng)該封裝在效勞器端,不要在ASP文件里出現(xiàn),涉及到與數(shù)據(jù)庫(kù)連接的用戶名和口令可問(wèn)題應(yīng)給予較小強(qiáng)度的權(quán)限。用戶名和口令是黑客們比較關(guān)注的東西,如果能通過(guò)某種方式看到源代碼,那后果將不堪設(shè)想,因此要盡量減少他們?cè)贏SP文件中的出現(xiàn)頻率。我們可以把出現(xiàn)次數(shù)比較多的用戶名和口令可以寫(xiě)在一個(gè)比較隱蔽的包含文件中。如果涉及到與數(shù)據(jù)庫(kù)連接的問(wèn)題,要只給予執(zhí)行存儲(chǔ)過(guò)程的權(quán)限,不要直接給予該用戶以修改、插入、刪除記錄的權(quán)限,要不會(huì)很容易出現(xiàn)漏洞。大多數(shù)的ASP頁(yè)面需要進(jìn)行驗(yàn)證,這個(gè)時(shí)候可以跟蹤上一個(gè)頁(yè)面的文件名,只有從上一個(gè)頁(yè)面轉(zhuǎn)進(jìn)來(lái)的會(huì)話才能讀取這個(gè)頁(yè)面。現(xiàn)在大多數(shù)要經(jīng)過(guò)驗(yàn)證的ASP程序都是在頁(yè)面頭上加一個(gè)判斷語(yǔ)句,但還是有可能被黑客繞過(guò)驗(yàn)證直接進(jìn)入,因此有必要跟蹤上一個(gè)頁(yè)面。還有就是在ASP的主頁(yè)正在制作期間并沒(méi)有進(jìn)行最后調(diào)試完成以前,可以被某些搜索引擎追加為搜索的對(duì)象,如果此時(shí)有人要搜索這個(gè)網(wǎng)頁(yè)進(jìn)行攻擊,就會(huì)得到有關(guān)文件的定位,并在瀏覽器中可查看到數(shù)據(jù)庫(kù)地點(diǎn)和結(jié)構(gòu)上的一些細(xì)節(jié)問(wèn)題以至于看到完整的源代碼。因此,程序員需在該網(wǎng)頁(yè)發(fā)布前對(duì)其進(jìn)行徹底的調(diào)試,以到達(dá)ASP編程平安的目的。ASP效勞器的平安設(shè)置目前支付ASP效勞器的操作系統(tǒng)主要有微軟公司的Windows2000和Windows2003,現(xiàn)在以Windows2000為例如講解下幾點(diǎn)防范技巧:1、要定時(shí)升級(jí)殺毒軟件和操作系統(tǒng)補(bǔ)?。?、不要安裝不平安的組件,如果不需要組件的同時(shí)也能完成的,最好不要安裝組件;必須需要組件完成的,最好安裝平安性比較高的組件;3、更改一下Internet信息效勞上網(wǎng)站的日志目錄路徑;4、更改一下Internet信息效勞默認(rèn)Web站點(diǎn)的主目錄,建一些虛擬目錄,當(dāng)然主目錄和虛擬目錄也不要建在系統(tǒng)盤上;5、主目錄或虛擬目錄中只允許讀取和記錄訪問(wèn)權(quán)限,執(zhí)行權(quán)限為純腳本,應(yīng)用程序保護(hù)設(shè)置為高。ASP木馬在ASP受到攻擊時(shí),入侵者一般是通過(guò)ASP程序的上傳功能的漏洞進(jìn)入后臺(tái)上傳ASP木馬程序的。當(dāng)木馬一旦上傳上去就有很有可能取得網(wǎng)站的管理權(quán)限,此時(shí)很可能會(huì)去修改或刪除文件、數(shù)據(jù)庫(kù)等或篡改網(wǎng)站的主頁(yè),因此ASP木馬的防范說(shuō)起來(lái)也非常的重要。ASP木馬的防范技巧有很多,但大致有以下六種:1、上傳的時(shí)候用戶需通過(guò)ftp來(lái)上傳來(lái)維護(hù)網(wǎng)頁(yè),盡量不安裝asp的上傳程序;2、用戶在上傳文件時(shí),需限制文件的擴(kuò)展名。例如,上傳文件格式為圖片的時(shí)候,設(shè)置為只能上傳擴(kuò)展名*.jpg或*.gif的文件,拒絕上傳為.asp或.exe等擴(kuò)展名的文件;3、上傳時(shí)對(duì)asp上傳程序的調(diào)用要進(jìn)行嚴(yán)格的身份認(rèn)證,而且只允許能信任的人使用上傳程序;4、下載時(shí)候要到正規(guī)網(wǎng)站下載asp程序,下載后要對(duì)其數(shù)據(jù)庫(kù)名稱和存放路徑進(jìn)行修改,數(shù)據(jù)庫(kù)文件名稱也要有一定復(fù)雜性;5、維護(hù)是一個(gè)很現(xiàn)實(shí)的問(wèn)題,平時(shí)要多進(jìn)行維護(hù),經(jīng)常查看在文件夾里有沒(méi)有一些關(guān)于*.asp或*.exe文件,特別是在放置上傳文件的文件夾內(nèi),還有就是要查看數(shù)據(jù)庫(kù)中有沒(méi)有陌生的數(shù)據(jù)表。一旦發(fā)現(xiàn)被入侵和攻擊,立即刪除此文件,還有就是要經(jīng)常備份數(shù)據(jù)庫(kù)、網(wǎng)頁(yè)等重要文件,一旦發(fā)現(xiàn)被木馬破壞,還能及時(shí)復(fù)原,以到達(dá)減少損失的目的;6、不光是網(wǎng)站前臺(tái),網(wǎng)站的后臺(tái)也顯的尤為重要。最主要的就是不要在頁(yè)面上作后臺(tái)的地址鏈接,因?yàn)檫@樣后臺(tái)地址不容易被破解。網(wǎng)站后臺(tái)的管理賬號(hào)密碼也不應(yīng)過(guò)于簡(jiǎn)單,可以經(jīng)常更換,并且最好使用附加碼,這樣,網(wǎng)站的平安性就大大增加了。防止暴力破解暴力破解是一種比較強(qiáng)制的手段,也是黑客比較常用的攻擊手段,他們利用某種程序使用窮舉法對(duì)其進(jìn)行攻擊。此時(shí),對(duì)于缺乏相應(yīng)平安措施的網(wǎng)站,他們常常會(huì)得之應(yīng)手。防止此類攻擊的方法是:使用強(qiáng)壯密碼,也就是設(shè)置比較復(fù)雜的密碼;定期更改密碼并通知用戶;限制錯(cuò)誤輸入次數(shù),超過(guò)錯(cuò)誤次數(shù)會(huì)自動(dòng)終止;采用密鑰加密、解密;使用附加密碼防止程序的試探性登錄。測(cè)試測(cè)試環(huán)境本系統(tǒng)測(cè)試環(huán)境:CPUPIV8000,內(nèi)存KMAX256M,SQLServer2000,Windows2000/XP/2003下均測(cè)試通過(guò)。建議用戶CPUPIV,內(nèi)存512M及以上,數(shù)據(jù)庫(kù)版本SQLServer2000,Windows2000及以上軟硬件平臺(tái)使用。測(cè)試結(jié)果各模塊對(duì)用戶信息加密,防SQL注入,管理員查看注入日志均做了詳細(xì)的測(cè)試,均到達(dá)了需求分析里的效果和預(yù)期的功能。1、在用戶注冊(cè)界面中注冊(cè)一個(gè)名為“CUIT〞及密碼為“111111”2、在用戶“CUIT〞設(shè)置為管理員;3、在用戶登錄界面中輸入用戶名“drop〞及密碼“123456”4、在用戶登錄界面中輸入“CUIT〞和密碼“111111”6.2.1測(cè)試效果1、在用戶注冊(cè)界面中注冊(cè)一個(gè)名為“CUIT〞及密碼為“111111”圖14注冊(cè)成功測(cè)試圖2、數(shù)據(jù)庫(kù)加密后的效果如圖15:圖15數(shù)據(jù)加密測(cè)試圖3、此時(shí)數(shù)據(jù)庫(kù)中“Popedom〞的值為“0”,將其改為“1”,完成管理員設(shè)置。點(diǎn)擊“現(xiàn)在登錄〞進(jìn)入用戶登錄界面。在用戶登錄界面中輸入用戶名“drop〞及密碼“123456圖16非法注入終止測(cè)試圖4、此時(shí)用戶非法信息存入數(shù)據(jù)庫(kù),效果如圖17〔PKID為2〕:圖17非法信息加密測(cè)試圖5、在用戶登錄界面中輸入“CUIT〞和密碼“111111”和隨機(jī)驗(yàn)證碼進(jìn)行登錄,其效果如圖18:圖18查看注入日志測(cè)試圖按鈕輸入操作預(yù)期結(jié)果測(cè)試結(jié)果用戶名為CUIT和密碼為111111等單擊“注冊(cè)〞按鈕數(shù)據(jù)庫(kù)里用戶名和密碼等不是原來(lái)的字符串?dāng)?shù)據(jù)庫(kù)里顯示的是加密后的一段亂碼的字符串單擊返回登錄界面返回登錄界面在Popedom的值上輸入1關(guān)閉設(shè)用戶CUIT為管理員設(shè)用戶CUIT為管理員輸入會(huì)員登錄名為drop和密碼為123456,再輸入隨機(jī)驗(yàn)證碼單擊“登錄〞按鈕自動(dòng)終止登錄并轉(zhuǎn)到錯(cuò)誤頁(yè)面自動(dòng)終止登錄并轉(zhuǎn)到錯(cuò)誤頁(yè)面,錯(cuò)誤提示:你所填寫(xiě)的信息:drop

含非法字符:drop

對(duì)不起,你所填寫(xiě)的信息含非法字符!輸入會(huì)員登錄名為CUIT和密碼為111111,再輸入隨機(jī)驗(yàn)證碼單擊“登錄〞按鈕查看到注入信息顯示為亂碼的字符串查看到注入信息為解密后的字符串用戶:drop

密碼:123456注入時(shí)間:2007-5-2817:02:176.2.2測(cè)試過(guò)程及結(jié)果測(cè)試過(guò)程及結(jié)果如表1:表1測(cè)試過(guò)程及結(jié)果表結(jié)論通過(guò)本次課題的研究,看出ASP網(wǎng)站的平安性對(duì)于用戶的重要性。ASP的平安性表達(dá)在多個(gè)方面,從信息平安的角度來(lái)說(shuō)沒(méi)有絕對(duì)平安的東西,但可以通過(guò)人為的因素去最大限度的彌補(bǔ)平安漏洞。本設(shè)計(jì)采用RSA加密算法,對(duì)用戶注冊(cè)信息進(jìn)行加密,到達(dá)預(yù)期的加密效果,但在加密過(guò)程中比較慢,因?yàn)镽SA加密算法涉及到分解兩個(gè)大素?cái)?shù)的問(wèn)題,因而要使用配置較好的效勞器,要不會(huì)出現(xiàn)網(wǎng)頁(yè)超時(shí)。防注入模塊里預(yù)先定義了客戶端提交的非法參數(shù),用戶進(jìn)行登錄時(shí)進(jìn)行循環(huán)查詢非法字符,如無(wú)發(fā)現(xiàn)那么正常等,否那么轉(zhuǎn)出錯(cuò)誤頁(yè)面,到達(dá)了一種防注入的效果。本設(shè)計(jì)還需要進(jìn)行的下一步工作是研究對(duì)用戶信息中的重要文件進(jìn)行加密,當(dāng)然,這需要配置更好的效勞器和能利用更好的加密算法的前提下去完成,還有就是在輔助性設(shè)計(jì)中提及更多更平安的建設(shè)性意見(jiàn),這些都會(huì)在以后的學(xué)習(xí)和實(shí)踐中去完成。總之,ASP網(wǎng)站平安需要從多方面著手,對(duì)于一個(gè)本科生來(lái)說(shuō)進(jìn)行這方面的研究,能力上還有待進(jìn)一步的提高才能到達(dá)更好的效果。參考文獻(xiàn)[1]張仕斌,譚三,易勇,蔣毅.網(wǎng)絡(luò)平安技術(shù)[M].北京:清華大學(xué)出版社,2004。[2]來(lái)賓,付晨樸.網(wǎng)站規(guī)劃建設(shè)與管理維護(hù)[M].北京:冶金業(yè)出版社,2003。[3]DouglasEer.TCP/IP網(wǎng)絡(luò)互連技術(shù)[M].北京:清華大學(xué)出版社,1998。[4]AndrewS.Tanenbaum.計(jì)算機(jī)網(wǎng)絡(luò)[M].北京:清華大學(xué)出版社,1998。[5]鄧文淵,陳惠貞,陳俊榮.ASP與網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù)[M].北京:中國(guó)鐵道出版社,2003。[6]方睿,刁仁宏,吳四九.網(wǎng)絡(luò)數(shù)據(jù)庫(kù)原理及應(yīng)用[M].成都:四川大學(xué)出版社,2005。

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論