Web數(shù)據(jù)庫系統(tǒng)的安全性分析 計算機專業(yè)_第1頁
Web數(shù)據(jù)庫系統(tǒng)的安全性分析 計算機專業(yè)_第2頁
Web數(shù)據(jù)庫系統(tǒng)的安全性分析 計算機專業(yè)_第3頁
Web數(shù)據(jù)庫系統(tǒng)的安全性分析 計算機專業(yè)_第4頁
Web數(shù)據(jù)庫系統(tǒng)的安全性分析 計算機專業(yè)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGEPAGE24題目:Web數(shù)據(jù)庫系統(tǒng)的安全性分析摘要計算機和網(wǎng)絡(luò)技術(shù)的廣泛應(yīng)用,給信息安全提出了更高的要求,在信息系統(tǒng)開發(fā)設(shè)計過程中,安全性能總是被放在首要的位置,成為信息系統(tǒng)生存的關(guān)鍵。數(shù)據(jù)庫是基于WEB信息系統(tǒng)的核心組成部分,面臨來自外部和內(nèi)部的雙重威脅,對其進行加密等安全處理,是進行數(shù)據(jù)保護的有效手段。本文介紹了幾種流行的Web數(shù)據(jù)庫訪問技術(shù),同時針對Web數(shù)據(jù)庫的安全問題給出了一個初步的安全模型。關(guān)鍵詞:數(shù)據(jù)庫;Web安全;訪問控制

SummaryThewideapplicationsofcomputerandInternettechnologycallforahigherdemandontheinformationsecurity.Intheprocessofexploringanddesigninganinformationsystem,securityhasalwaysbeengiventhefirstpriority,whichiscriticalforthesurvivaloftheinformationsystem.AsthenuclearpartofWEBinformationsystem,databasefacesthedoublethreatscominginternallyandexternally.Dosuchasencryptionsecurityprocessbecomestheeffectivemeansfordataprotection.SeveralpopularaccesstechnologiesareintroducedandaprimarysecuritymodelofWebDatabaseisgiveninthepaper.Keywords:Database;Websafety;accesscontrol

目錄TOC\o"1-4"\h\z\u第一章引言 61.1本課題的研究意義 71.2本論文的目的、內(nèi)容及作者的主要貢獻 7第二章Web數(shù)據(jù)庫的研究現(xiàn)狀及設(shè)計目標(biāo) 82.1相近研究課題的特點及優(yōu)缺點分析 82.2現(xiàn)行研究存在的問題及解決辦法 82.3本課題要達到的設(shè)計目標(biāo) 9第三章Web數(shù)據(jù)庫的訪問技術(shù)及安全分析 103.1Web數(shù)據(jù)庫的安全威脅 103.2Web數(shù)據(jù)庫訪問技術(shù) 123.2.1CGI/API技術(shù) 123.2.2ASP技術(shù) 13ASPWeb數(shù)據(jù)庫的安全漏洞 14ASPWeb數(shù)據(jù)庫的安全防護 153.2.3Java/JDBC技術(shù) 17第四章Web數(shù)據(jù)庫安全管理技術(shù)與實現(xiàn) 194.1Web數(shù)據(jù)庫安全模型 194.2Web數(shù)據(jù)庫安全管理技術(shù) 194.2.1防火墻技術(shù) 204.2.2身份認(rèn)證和授權(quán)控制 214.2.3監(jiān)視跟蹤和審計 244.2.4存儲過程 254.2.5備份與故障恢復(fù) 254.3案例分析 26第五章結(jié)束語 29參考文獻 30鳴謝 32

第一章引言隨著WWW應(yīng)用領(lǐng)域的不斷拓展,人們已不滿足于只用Web服務(wù)器瀏覽和發(fā)布靜態(tài)的信息,人們需要通過它發(fā)表意見、查詢數(shù)據(jù)甚至進行網(wǎng)上購物。原來的靜態(tài)Web頁面已經(jīng)滿足不了用戶對信息服務(wù)的動態(tài)性、交互性的要求。這就迫切需要實現(xiàn)Web與數(shù)據(jù)庫的交互。Web與數(shù)據(jù)庫這兩者結(jié)合意味Web數(shù)據(jù)庫將存儲和管理大量重要數(shù)據(jù),然兒一但它們被盜用或篡改,可能會帶來巨大的政治和經(jīng)濟損失?;趶V域網(wǎng)的Web數(shù)據(jù)庫訪問會帶來很大的安全問題。首先是數(shù)據(jù)庫的非法訪問;另一方面數(shù)據(jù)通過網(wǎng)絡(luò)傳輸,可能被截取、篡改。還有黑客的攻擊可能使系統(tǒng)癱瘓。在動態(tài)Web不斷發(fā)展的今天,人們對其依賴性也越來越強,但由于其開放性,在設(shè)計時對與信息的保密和系統(tǒng)的安全考慮不完備,及人們對保護數(shù)據(jù)庫的安全意識薄弱,造成現(xiàn)在數(shù)據(jù)庫攻擊與破壞事件層出不窮,給人們的日常生活和經(jīng)濟活動造成了很大麻煩。因此,研究網(wǎng)絡(luò)環(huán)境下的Web數(shù)據(jù)庫系統(tǒng)的安全保障已經(jīng)成為了重要的課題。自上世紀(jì)九十年代初我國接入Internet以來,短短十幾年的發(fā)展歷程,我國上網(wǎng)用戶的總?cè)藬?shù),1997年第一次調(diào)查結(jié)果為62萬人,去年年底上升至1.11億人?;ヂ?lián)網(wǎng)的迅速普及,更讓國內(nèi)電子商務(wù)的發(fā)展水到渠成。但是,在電子商務(wù)快速發(fā)展的同時,網(wǎng)絡(luò)安全的問題也始終籠罩在它的頭上。從最新的互聯(lián)網(wǎng)安全威脅報告看:大約有16%的攻擊是針對電子商務(wù)的,這表明攻擊者正從以出名為目的轉(zhuǎn)向以獲得經(jīng)濟利益為目的。保證Web數(shù)據(jù)庫安全,已是整個電子商務(wù)系統(tǒng)的當(dāng)務(wù)之急、人心所向。而無論是B2B還是B2C,Web都是它們最初的也是最基本的界面,由此Web的安全問題便突顯出來,它也是整個網(wǎng)絡(luò)安全首當(dāng)其沖的要害問題。何謂Web,通常指的是WWW(WorldWideWeb)的簡稱,Web最初是以開發(fā)一個人類知識為目的并為某一項目的協(xié)作者提供相關(guān)信息及交流思想的途徑。Web采用了C/S的軟件體系結(jié)構(gòu),為了發(fā)布信息的通用性,Web依賴于共同的尋址句法,共同的協(xié)議集,數(shù)據(jù)格式的協(xié)商處理。由于Web的開放性、靈活性以及其空前廣泛的應(yīng)用,Web站點的建立日漸增加。同時,從國際WWW安全小組CERT(ComouterEmergencyResponseTeam)的統(tǒng)計資料看,Internet中與Web相關(guān)的安全事故也呈上升趨勢。為此,W3組織、各大學(xué)、研究機構(gòu)以及一些公司為了保證Web的安全性,從各種途徑對其進行了廣泛的研究。本課題的研究意義目前Web技術(shù)與數(shù)據(jù)庫管理系統(tǒng)(DBMS)相互融合領(lǐng)域的研究已成為熱點方向之一,數(shù)據(jù)庫廠家和Web公司也紛紛推出各自的產(chǎn)品及中間件來支持Web技術(shù)和DBMS的融合,將兩者取長補短,發(fā)揮其各自的優(yōu)勢,使用戶可以在Web瀏覽器上方便地檢索數(shù)據(jù)庫的內(nèi)容。但由于Internet本身并沒有提供任何安全機制,只要Web站點和Internet連通,就可能被任何人訪問。用戶已不再受時間、地域的限制,完全可以不按規(guī)定的操作流程進行操作,可以直接輸入地址訪問數(shù)據(jù)庫,或隨心所欲地采用標(biāo)簽、超級鏈接,或頻繁使用Back、Fefresh等操作,對后臺數(shù)據(jù)庫構(gòu)成直接威脅。因此,研究基于Web的數(shù)據(jù)庫安全技術(shù)對于信息系統(tǒng)的安全保護有著重要的現(xiàn)實意義。本論文的目的、內(nèi)容及作者的主要貢獻在Web數(shù)據(jù)庫中,大量信息被集中和存儲在數(shù)據(jù)庫中并且在與Internet相連接的計算機和終端之間傳輸。雖然在Web安全性問題上國內(nèi)外已作了研究,但是在重要的數(shù)據(jù)交換行為中,它對于抵御外界攻擊的能力仍然顯得十分脆弱。本文從介紹幾種流行的Web數(shù)據(jù)庫訪問技術(shù)出發(fā),針對Web數(shù)據(jù)庫的安全問題,建立一個Web數(shù)據(jù)庫安全體系的初步模型,并對數(shù)據(jù)庫系統(tǒng)的安全控制進行了詳細闡述。指出安全問題應(yīng)以預(yù)防為主,應(yīng)該在構(gòu)建Web數(shù)據(jù)庫服務(wù)器時,有意識地加強數(shù)據(jù)庫服務(wù)器某方面的防范措施。希望能提高人們對Web數(shù)據(jù)庫安全防范的認(rèn)識。

第二章Web數(shù)據(jù)庫的研究現(xiàn)狀及設(shè)計目標(biāo)2.1相近研究課題的特點及優(yōu)缺點分析近年來,人們對于Web數(shù)據(jù)庫安全問題的關(guān)注呈上升趨勢,但由于其專業(yè)性、復(fù)雜性,Web數(shù)據(jù)庫的安全防護并未達到理想的成果。而對于其防范措施也是仁者見仁,智者見智。如對身份認(rèn)證機制的研究最方便的方法是設(shè)置口令法。在設(shè)置口令的方法中,系統(tǒng)給每個合法用戶分配一個唯一的UserID和Password。但是,由于Password的先天不足,其可靠程度極差,容易被他人猜出或測得。因此,設(shè)置口令法對安全強度要求比較高的系統(tǒng)不適用。近年來,一些人提出更加有效的身份認(rèn)證技術(shù)。例如智能卡技術(shù),物理特征(指紋,聲紋,手圖等)認(rèn)證技術(shù)等具有高強度的身份認(rèn)證技術(shù)日益成熟,并取得了不少應(yīng)用成果。但由于其技術(shù),經(jīng)濟等方面的原因并不能普遍推廣。只有一些對安全強度要求比較高的系統(tǒng),并在一定技術(shù),經(jīng)濟條件下才會用到。同時,一些文章也有很多值得我們借鑒的地方。如曾愛林在《基于Web的網(wǎng)絡(luò)數(shù)據(jù)安全體系的建立與完善》中明了的介紹Web數(shù)據(jù)庫的幾種訪問技術(shù),并針對Web數(shù)據(jù)庫的安全問題,建立了一個Web數(shù)據(jù)庫安全體系的初步模型,指出安全問題應(yīng)以預(yù)防為主,應(yīng)該在構(gòu)建Web數(shù)據(jù)庫服務(wù)器時,及時進行漏洞檢測、風(fēng)險評估,根據(jù)檢測結(jié)果,有意識地加強數(shù)據(jù)庫服務(wù)器某方面的防范措施。竇麗華,蔣慶華,等人在《基于Web的信息系統(tǒng)安全研究》中研究了基于Web的信息系統(tǒng)的安全問題及如何充分并合理地利用操作系統(tǒng)、Web服務(wù)器和數(shù)據(jù)庫管理系統(tǒng)所提供的安全設(shè)置,以有效地保證信息系統(tǒng)的安全性。利用應(yīng)用程序所具有的靈活性,可以彌補操作系統(tǒng)、Web服務(wù)器和數(shù)據(jù)庫管理系統(tǒng)的安全漏洞,結(jié)合某單位業(yè)務(wù)信息系統(tǒng)的案例,分別從操作系統(tǒng)、Web服務(wù)器、數(shù)據(jù)庫管理系統(tǒng)、應(yīng)用程序4個方面對安全問題進行分析,同時給出了建議。Web數(shù)據(jù)庫的安全防護是一條長遠的路,只有通過不斷地改進和完善,不斷地實踐,才能有效的防范入侵。2.2現(xiàn)行研究存在的問題及解決辦法Web數(shù)據(jù)庫的安全是一個系統(tǒng)性,綜合性的問題,而且其涉及的范圍很廣,因此,在進行系統(tǒng)設(shè)計時不能將它孤立考慮,只有結(jié)合實際層層設(shè)防,這個問題才能得到有效的解決。實際上,任何一層的安全僅利用一種安全技術(shù)都不可能提供所有安全服務(wù)和抵抗所有可能攻擊,任何一個實際的系統(tǒng)也不可能采用過多的安全策略。任何安全措施都是相對的,只能根據(jù)具體的應(yīng)用對象,權(quán)衡安全要求與所需花費的代價來進行選擇適當(dāng)?shù)陌踩呗?。還應(yīng)看到,和其它技術(shù)一樣,入侵者的手段也在不斷提高。安全防范是一個永久性的問題,只有通過不斷地改進和完善安全手段,才能保證系統(tǒng)的正常運行,才能提高系統(tǒng)的可靠性。2.3本課題要達到的設(shè)計目標(biāo)數(shù)據(jù)庫系統(tǒng)主要是為用戶提供完善方便的信息和數(shù)據(jù)服務(wù),實現(xiàn)數(shù)據(jù)信息的共享。設(shè)計數(shù)據(jù)庫安全系統(tǒng)的目的,是要合理有效地解決數(shù)據(jù)庫中的數(shù)據(jù)信息的共享問題。在安全的數(shù)據(jù)庫中,既要保證授權(quán)的合法用戶對數(shù)據(jù)的有效存取,又能嚴(yán)格拒絕非法用戶的攻擊企圖。具體地說,數(shù)據(jù)庫安全系統(tǒng)的設(shè)計目標(biāo)主要有以下3個方面:(1)數(shù)據(jù)的完整性數(shù)據(jù)的完整性指數(shù)據(jù)的正確性、一致性和相容性。系統(tǒng)只允許授權(quán)的合法用戶存取數(shù)據(jù)庫中的數(shù)據(jù)信息,并且以不破壞數(shù)據(jù)的完整性為前提。同時,系統(tǒng)應(yīng)該杜絕非法用戶對數(shù)據(jù)信息進行任何存取操作,主要包括竊取和破壞。由于多個程序并發(fā)存取同一個數(shù)據(jù)庫中的數(shù)據(jù),可能會造成數(shù)據(jù)的不一致性。因此,安全系統(tǒng)要具有保證數(shù)據(jù)一致性的功能。(2)數(shù)據(jù)的可用性當(dāng)系統(tǒng)授權(quán)的合法用戶申請存取有權(quán)存取的數(shù)據(jù)時,安全系統(tǒng)應(yīng)該盡量減小對合法操作的影響。換句話說,采用的安全機制不能明顯降低數(shù)據(jù)庫系統(tǒng)的操作性能。(3)數(shù)據(jù)的保密性安全系統(tǒng)應(yīng)該提供一個高強度的加密方案,對數(shù)據(jù)庫中的機敏數(shù)據(jù)進行加密處理。只有當(dāng)系統(tǒng)的合法用戶訪問有權(quán)訪問的數(shù)據(jù)時,系統(tǒng)才把相應(yīng)的數(shù)據(jù)進行解密操作;否則,系統(tǒng)應(yīng)保持機敏數(shù)據(jù)的加密狀態(tài),以防止非法用戶竊取到明文信息,對系統(tǒng)進行攻擊。

第三章Web數(shù)據(jù)庫的訪問技術(shù)及安全分析3.1Web數(shù)據(jù)庫的安全威脅為了讓數(shù)據(jù)庫能為處于網(wǎng)絡(luò)上的用戶服務(wù)而暴露在網(wǎng)絡(luò)中,網(wǎng)絡(luò)上的任何用戶都可以訪問這個數(shù)據(jù)庫,這種情況下對數(shù)據(jù)庫訪問的控制只能通過用戶控制既用戶名/密碼來進行。任何知道密碼的用戶都可以訪問,這增加了密碼保護管理的難度,同時用戶名/密碼通過Internet傳輸很容易被人竊取。其次,數(shù)據(jù)應(yīng)用放讀取的數(shù)據(jù)是通過Web傳輸,而這些數(shù)據(jù)缺乏有效的安全措施保護,從而可能被截取、篡改。另外,Web數(shù)據(jù)庫中存儲著大量的數(shù)據(jù)信息,往往成為信息系統(tǒng)的關(guān)鍵,這就需要數(shù)據(jù)庫及數(shù)據(jù)庫所在的計算機能夠安全運行。數(shù)據(jù)庫放在Internet中很容易受到黑客的各種攻擊。隨著網(wǎng)絡(luò)信息系統(tǒng)的應(yīng)用,數(shù)據(jù)庫遠程訪問的安全問題日益突出。這個問題可采用網(wǎng)絡(luò)傳輸加密,用戶身份認(rèn)證等安全措施解決。但由于日前的主流數(shù)據(jù)的網(wǎng)絡(luò)傳輸部分都由數(shù)據(jù)庫廠家來完成,恰恰缺少這些安全措施,因此上述安全技術(shù)在普通的數(shù)據(jù)庫系統(tǒng)中難以直接應(yīng)用。另外利用操作系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng)提供的安全保護功能是常用的數(shù)據(jù)庫安全解決方案。但是Internet本身并沒有提供任何安全機制,只要Web站點和Internet連通,就可能被任何人訪問。Web數(shù)據(jù)庫受到的威脅大致包括泄漏、竊取、竄改、冒充、延遲、重傳、遺失、越權(quán)存取數(shù)據(jù)、否認(rèn)已收送數(shù)據(jù)及侵犯隱私權(quán)等。例如用ASP+Access的主要安全隱患來自Access數(shù)據(jù)庫有可能被下載的漏洞。用Access做后臺數(shù)據(jù)庫時,如果不對Access(*.mdb)的路徑和數(shù)據(jù)庫名稱進行安全設(shè)置,那么該數(shù)據(jù)庫就有被竊取下載的可能?,F(xiàn)實生活中許多使用者為了記憶方便,各種證卡習(xí)慣性地使用同一密碼,如果被下載的Access的信息放有用戶名稱、密碼口令、資金帳戶等重要信息,一旦一個密碼泄漏,將會波及其它密碼失效,甚至?xí)o用戶帶來重大損失,這非常危險。Access安全威脅主要有以下幾個原因:(1)Access數(shù)據(jù)庫地址、路徑過于簡單Access數(shù)據(jù)庫被下載,主要是存放數(shù)據(jù)庫的路徑和數(shù)據(jù)庫名稱被獲知。一般情況下,網(wǎng)絡(luò)黑客先從網(wǎng)站的普通訪問中得到“用戶網(wǎng)站主IP地址”,然后,通過訪問有數(shù)據(jù)庫交互功能的下級子目錄(例如通過表單等),推斷到存有數(shù)據(jù)庫文件的有效路徑(顯示在地址欄里),再通過查看源代碼獲知數(shù)據(jù)庫文件名(點鼠標(biāo)右鍵即可),然后在地址欄里輸入含*.mdb的地址就可得到Access數(shù)據(jù)庫,從而獲得數(shù)據(jù)表信息。例如,用戶建立的yuangong.mdb(員工人事信息庫)放在虛擬目錄/work下,如果沒有事先對yuangong.mdb進行安全加密處理,那么在瀏覽器的地址欄鍵入:“http://用戶網(wǎng)站主IP地址/work/yuangong.mdb”,yuangong.mdb整個文件就會被輕易下載。文件中所有的重要數(shù)據(jù)信息就會被別人輕易竊取。(2)使用網(wǎng)絡(luò)免費軟件所導(dǎo)致的數(shù)據(jù)安全問題由于許多網(wǎng)絡(luò)管員沒有足夠的時間與精力開發(fā)具有針對性的應(yīng)用程序,如聊天室、bbs論壇、留言板、網(wǎng)絡(luò)Office辦公軟件等,而多是采用直接從網(wǎng)上下載的方法來滿足急用。這些程序的源代碼多是公開的,所使用的數(shù)據(jù)庫名、存放路徑基本無秘密可言,如果安全措施不力,不加處理就拿來使用,會給數(shù)據(jù)庫的安全帶來非常大的危險。(3)服務(wù)器操作系統(tǒng)的安全隱患現(xiàn)在使用WindowsNT/2000Server作為服務(wù)器操作系統(tǒng)的用戶非常主流,由于Windows2000Server目錄權(quán)限的默認(rèn)設(shè)置安全性較差。很多網(wǎng)管只知道讓W(xué)eb服務(wù)器運行起來,很少對NTFS進行權(quán)限設(shè)置,有的服務(wù)器甚至未禁止對文件目錄的訪問控制,因此,必然會帶來很大安全漏洞。如果使用FAT分區(qū),那么ASP程序中的FileAccess組件的FileSystemObiect對象就可以對大部分文件(主要是文本文件)進行讀寫、目錄操作、文件復(fù)制、更名、刪除、修改,還可以下載FAT分區(qū)上的任何文件。由于ASP程序采用的是非編譯性語言,程序源代碼的安全性非常低,任何人只要進入站點,就可以獲得源代碼,從而造成ASP應(yīng)用程序源代碼的泄露。(4)程序設(shè)計中的安全隱患大多數(shù)ASP程序利用表單(Form)實現(xiàn)與用戶交互的功能,而相應(yīng)的內(nèi)容會反映在瀏覽器的地址欄中,如果不采用適當(dāng)?shù)陌踩胧灰浵逻@些內(nèi)容,就可以繞過驗證,直接進入某一頁面。例如在瀏覽器中鍵入“……some.ASP?id=1”,即可不經(jīng)過表單頁面直接進入滿足“id=1”條件的頁面。因此,在設(shè)計驗證或注冊頁面時,必須采取特殊措施來避免此類問題的發(fā)生,以提高數(shù)據(jù)庫的安全性。有的設(shè)計者出于安全考慮,將ASP應(yīng)用程序中Access的連接語句另外存取,命名為conn.inc,其代碼為:<!--#includefile="conn.inc"-->認(rèn)為這樣以來Access數(shù)據(jù)庫就轉(zhuǎn)藏起來,客戶端就得不到數(shù)據(jù)庫的真實路徑和名稱,其實.inc文件通過網(wǎng)絡(luò)也很容易被下載,即使對Access所在文件夾做了變動,文件路徑也會暴露無疑。3.2Web數(shù)據(jù)庫訪問技術(shù)Web是目前Internet上發(fā)展最快也是Internet網(wǎng)上最重要的信息檢索手段。為了進行網(wǎng)上數(shù)據(jù)的高效存取,實現(xiàn)交互動態(tài)Web頁面,就必須以大量數(shù)據(jù)資源為基礎(chǔ),因此必然要引入數(shù)據(jù)庫系統(tǒng),于是出現(xiàn)了Web數(shù)據(jù)庫。許多數(shù)據(jù)庫和WWW商家都把數(shù)據(jù)庫與Web的連接性作為發(fā)展戰(zhàn)略的一個重要組成部分。3.2.1CGI/API技術(shù)通用網(wǎng)關(guān)接口,是一種使用最早的Web數(shù)據(jù)庫連接技術(shù),它作為Web服務(wù)器與數(shù)據(jù)庫服務(wù)器的中間件,負責(zé)管理兩者的通信并提供應(yīng)用程序服務(wù)。用戶使用Web瀏覽器以THML形式向Web服務(wù)器提出訪問數(shù)據(jù)庫的請求,Web服務(wù)器收到請求后,通過CGI將HTML轉(zhuǎn)化為SQL來訪問Web數(shù)據(jù)庫,查詢結(jié)果再通過CGI轉(zhuǎn)化為HTML形式,送回瀏覽器。從而完成瀏覽器與數(shù)據(jù)庫的交互。針對CGI的低效問題,人們有開發(fā)了API(ApplicationProgrammingInterface),API通常以動態(tài)連接庫(DLL)的方式提供,駐留在Web服務(wù)器上的程序,作用與CGI相似,擴展Web服務(wù)器的功能,其連接模型見圖1。WebAPI技術(shù)最大特點是與Web服務(wù)器處于同一地址空間,因此執(zhí)行效率比較高。Web瀏覽器Web瀏覽器數(shù)據(jù)庫CGI/API中間件Web服務(wù)器圖1CGI/APIWeb數(shù)據(jù)庫連接模型按Web數(shù)據(jù)庫漏洞的成因大致分為:(1)配置不當(dāng)而形成的Web數(shù)據(jù)庫漏洞大多數(shù)的Web服務(wù)器都提供有兩種方式存儲CGI/API程序:將CGI/API程序統(tǒng)一保存在一個特定目錄下;將CGI/API程序與HTML文檔及圖像一并存放。由于HTML文檔可直接被用戶訪問,因此如果以第二種方式存儲CGI/API程序,就有可能讓用戶閱讀或下載CGI/API程序從而達到被其利用的目的。(2)編寫CGI/API程序語言自身缺陷導(dǎo)致的Web數(shù)據(jù)庫安全隱患目前編寫CGI/API程序的語言主要有Shell腳本、Perl腳本和C語言。C語言對串的處理功能不強。在處理串時一般是建立一個預(yù)定義空間來收集用戶的輸入。當(dāng)用戶的輸入數(shù)據(jù)越界時容易造成緩沖區(qū)溢出。(3)過分相信用戶的輸入信息而形成的Web數(shù)據(jù)庫漏洞在許多考慮不全的CGI/API程序中,總是期待用戶輸入的數(shù)據(jù)是按照預(yù)期格式定義的和可預(yù)料的。但是,用戶的輸入存在多種繞過這些預(yù)定義格式的可能,而給腳本發(fā)送一些隨機的數(shù)據(jù)。(4)CGI/API程序中沒有過濾掉某些特殊字符而形成的安全漏洞例如,沒有過濾“../”,易泄露系統(tǒng)文件;沒有過濾“$”,易導(dǎo)致網(wǎng)頁中的敏感信息泄露等。3.2.2ASP技術(shù)ASP(ActiveServerPage)技術(shù)是Microsoft開發(fā)的新技術(shù),它結(jié)合了CGI程序和API技術(shù)的優(yōu)點,把HTML,Script,ActiveX組件有機的結(jié)合起來,生成交互性,高效率的Web服務(wù)器應(yīng)用程序。ASP腳本可以多種方式訪問數(shù)據(jù)庫,使用最多的是ADO(ActiveDataObject)方式。在這種方式中,ASP對數(shù)據(jù)庫的訪問主要是通過內(nèi)置對象DAC(DatabaseAccessComponent)使用數(shù)據(jù)庫訪問軟件SDO來實現(xiàn)的,可以實現(xiàn)與任何ODBC兼容數(shù)據(jù)庫或OLEDB數(shù)據(jù)源的高性能連接。ADO允許網(wǎng)絡(luò)開發(fā)者方便地將一個DB與一個“激活”的網(wǎng)頁相連接,以便存取和操作數(shù)據(jù)。ASP應(yīng)用程序是在服務(wù)器端運行,而不是在瀏覽器運行,實現(xiàn)了ASP的瀏覽器的無關(guān)性。Web瀏覽器Web瀏覽器ASPDLL數(shù)據(jù)庫HTML頁面ASPHTTPPADOODBC圖2ASPWeb數(shù)據(jù)庫連接模型ASPWeb數(shù)據(jù)庫的安全漏洞(1)ACCESS數(shù)據(jù)庫被下載的漏洞通常用戶可猜到服務(wù)器的數(shù)據(jù)庫的名字和路徑,那將是一個非??膳率虑?因為很多網(wǎng)站習(xí)慣把用戶注冊的信息和密碼放在數(shù)據(jù)中,一旦補攻擊者下載,會給網(wǎng)站造成不可估量的損失。如下即可下載數(shù)據(jù)庫aa.mdb/aa.mdb(2)引號造成的漏洞很多網(wǎng)站把注冊用戶名和密碼放到數(shù)據(jù)庫中,在登錄程序中用以下SQL語句來查詢數(shù)據(jù)庫以核對數(shù)據(jù)。<%dimconn,rsSetconn=Server.CreateObject("ADODB.Connection")conn.Open"Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath("test1.mdb")setrs=server.createobject("adodb.recordset")rs.locktype=3rs.cursortype=0No=Request("password")Name=Request("userName")rs.open"Select*FromuserWhere密碼='"&No&"'And姓名='"&Name&"'",connIfrsIsNothingThen...EndIf...%>此時,攻擊者只要構(gòu)造一個這樣的密:nihao'or'1'=1,那可通過數(shù)據(jù)驗證。為什么呢?請看最后生成的查詢語句就知到了。rs.open"Select*FromuserWhere密碼='nihao'or'1'='1'And姓名='"&Name&"'",conn'1'='1'永遠為TRUE所以通過了驗證。(3)URL直接請求漏洞如果攻擊者知道了一個ASP頁面的路徑和文件名,而這個文件又要經(jīng)過驗證才能進入,但是用戶直接請求包含ASP文件路徑和文件名的URL,則有可能進入到該頁面。/sunli.asp甚至攻擊者可以偽造一些參數(shù)掛靠在URL后面形成一個GET類型的HTTP請求,而服務(wù)器端正好是使用Querystring環(huán)境變量來采集數(shù)據(jù)或者根本沒有指定接受數(shù)據(jù)的方式,用戶偽造的參數(shù)即被服務(wù)器端驗證。通常攻擊的這個文件在網(wǎng)站中并沒有提供鏈接,是系統(tǒng)維護員遠程操作的入口。/sunli.asp?username=jacky&password=password采用上面介紹的特殊用戶名的密碼構(gòu)造方式,就有可能入侵到本來只有系統(tǒng)管理員才可以進入的頁面。ASPWeb數(shù)據(jù)庫的安全防護(1)防護Access數(shù)據(jù)庫被下載的漏洞解決這個漏洞的方法是使用不規(guī)則的數(shù)據(jù)庫名字和路徑。首先,為你的數(shù)據(jù)庫文件名稱起個復(fù)雜的不規(guī)則的名字,并把他放在多級目錄下。程序員在設(shè)計網(wǎng)站數(shù)據(jù)庫時,經(jīng)常會不自覺地給數(shù)據(jù)庫起一個與網(wǎng)站主題非常接近的名字,這就給攻擊者留下了可以乘之機。如:一個賣東西的網(wǎng)上購物網(wǎng)站,其后臺數(shù)據(jù)庫起名為shopping.mdb或者ebuy.mdb等可能會被攻擊者猜測出的名字。具有比較好的保密性的文件名一般要包括一些特殊的字符,如字母和數(shù)字的混合等。盡量不要使用規(guī)則的單詞或者單詞的組合作為數(shù)據(jù)庫及其他需要保密的文件的文件名。例如,給你的數(shù)據(jù)庫起名為ax35t7x.mdb,這樣的文件名攻擊者就很難猜出來。其次,把數(shù)據(jù)庫文件放到多級目錄之下,目錄名稱也盡量不要太規(guī)則。有的程序員喜歡把網(wǎng)站的各類文件分門別類地放置在不同的文件夾之下,并且給這些文件夾起一個能代表其中所放置的文件屬性的名字。如:把數(shù)據(jù)庫文件放置在\database\some.mdb,這也很容易被攻擊者猜測出來。因此,像數(shù)據(jù)庫這類需要特別注意安全性的文件盡量不要放在含義明顯的文件夾之下,適當(dāng)?shù)貥?gòu)造一些不規(guī)則的文件目錄,然后把數(shù)據(jù)庫文件放到用戶所構(gòu)造的多級不規(guī)則目錄之下。例如,把數(shù)據(jù)庫文件放到:\ddaa9\iop76\ss5y6\some.mdb,這樣攻擊者要想通過猜測來獲得數(shù)據(jù)庫的名字和路徑就非常的難。(2)防護引號造成的漏洞解決這個漏洞的方法是修改單引號的使用。對SQL語句中的單引號進行修改,使用像下面的函數(shù)來轉(zhuǎn)換。Functionsqlstr(data)Sqlstr="'"&Replace(data,"'","''")&"'"Endfunction把SQL中可能存在的單引號換成雙單引號連用的形式,這就避免了因單引號的前后匹配造成的攻擊者饒過用戶名和密碼驗證的漏洞。通常這樣使用這個函數(shù):sql="select*fromuserwhereusername="sql=sql&sqlstr(username)%>這樣,即使攻擊者構(gòu)造了諸如'nihao'or'1'='1'這樣的用戶名或者密碼,經(jīng)過sqlstr函數(shù)的運算,其結(jié)果為:rs.open"Select*FromuserWhere密碼='nihao''or密碼'1'<>'1'And姓名='"&Name&"'0,conn這樣就不會產(chǎn)生因or運算符導(dǎo)致SQL判斷永遠為true的情況。(3)防護URL直接請求漏洞解決這個漏洞的方法是使用附加的檢驗程序結(jié)合特殊的Session變量值。通常重要的頁面在進入之前需要用戶名和口令的驗證,可以把這個驗證的程序做在真正的頁面之前。如果在驗證的程序中通過了用戶的用戶名和口令,則使用Session變量記錄下用戶輸入的用戶名和口令,如Session("h9as3u8")=username&password,這個Session變量的名字很怪,一般來說攻擊者是猜不到的。通過用戶的用戶名和口令之后,再使用Response對象的Redirect方法重定向到重要的頁面。在這個重要頁面的開頭再次檢驗Session變量的值,其值不僅要求非空,而且要求是由特定的用戶名/密碼組合成的字符串。如果發(fā)現(xiàn)不符合的情況,立即終止程序的執(zhí)行(使用Response.end方法)或者顯示警告的信息。3.2.3Java/JDBC技術(shù)Java是SUN公司發(fā)布的一種面向?qū)ο蟮某绦蛟O(shè)計語言,它以其獨特的平臺獨立性、穩(wěn)固性、安全性以及對網(wǎng)絡(luò)提供的良好支持而成為Web數(shù)據(jù)庫的一個強有力的開發(fā)工具。Java語言的標(biāo)準(zhǔn)開發(fā)包中包含了一套抽象窗口工具庫AWT(abstractwindowstoolkit),使用應(yīng)用程序的界面風(fēng)格在Windows、Mac和XWindows系統(tǒng)中可以保持一致。Java語言編制的Applet程序易于在網(wǎng)上傳輸,它可以在客戶機端運行而不會引起安全問題。Java語言中提供的數(shù)據(jù)庫訪問技術(shù)稱為JDBC,它是JavaSoft公司設(shè)計第一個支持Java語言的標(biāo)準(zhǔn)的數(shù)據(jù)庫API。它與微軟公司的ODBC(opendatabaseconnectivity)在概念和標(biāo)準(zhǔn)上有相似之處,也是提供對各種關(guān)系型數(shù)據(jù)庫的無縫連接。JDBCAPI由SUN公司的JavaSoft子公司開發(fā),是一個標(biāo)準(zhǔn)統(tǒng)一的SQL數(shù)據(jù)存取接口。它由Java類組成,這些類代表數(shù)據(jù)連接、SQL語句和結(jié)果集等等,它們允許Java應(yīng)用程序把SQL語句發(fā)送到數(shù)據(jù)庫服務(wù)器并接受和處理結(jié)果集。JDBC機制與WebAPI和專用數(shù)據(jù)庫WebServer有所不同:在客戶機上運行的JavaApplet程序可以繞過Web服務(wù)器,直接和數(shù)據(jù)庫服務(wù)器連接,并直接把結(jié)果返回給客戶機瀏覽器,以節(jié)省中間層的處理時間。Java/JDBC接口訪問數(shù)據(jù)庫。目前絕大多數(shù)瀏覽器都支持Java開發(fā)接口程序,對軟件配置沒有過多的要求,只需要安裝JDBS驅(qū)動程序就可以了。因此使用Java/JDBC編寫數(shù)據(jù)庫接口程序在滿足移植性通用性擴展能力等方面具有優(yōu)勢。Web瀏覽器Web瀏覽器Web服務(wù)器JavaApplet數(shù)據(jù)庫HTTP圖3JDBCWeb數(shù)據(jù)庫連接模型以上是幾種代表性的Web數(shù)據(jù)庫連接技術(shù)。還有一些其它的連接技術(shù),比如,RAD,ObjectWeb,PHP等等,在此不一一列舉。

第四章Web數(shù)據(jù)庫安全管理技術(shù)與實現(xiàn)4.1Web數(shù)據(jù)庫安全模型Web數(shù)據(jù)庫安全威脅涉及許多方面,個人認(rèn)為安全措施應(yīng)綜合考慮,具體可以采用下列技術(shù)措施:(1)安裝防火墻;(2)身份認(rèn)證和數(shù)據(jù)完整性認(rèn)證服務(wù);(3)對機密敏感的數(shù)據(jù)進行加密存儲和傳輸;(4)訪問控制機制;(5)安全審計和監(jiān)視追蹤技術(shù);(6)數(shù)據(jù)庫備份與故障恢復(fù)。Web數(shù)據(jù)庫安全模型見圖1。防火墻防火墻用戶認(rèn)證服務(wù)Web數(shù)據(jù)庫服務(wù)器數(shù)據(jù)加密訪問控制審計備份圖4Web數(shù)據(jù)庫安全模型基于Web的管理信息系統(tǒng)采用的是3層Client/Server結(jié)構(gòu),即瀏覽器/Web服務(wù)器/數(shù)據(jù)庫服務(wù)器結(jié)構(gòu)。在采用ASP技術(shù)與數(shù)據(jù)庫連接的系統(tǒng)中,瀏覽器和Web服務(wù)器采用HTTP協(xié)議彼此通信。用戶執(zhí)行基于Web的數(shù)據(jù)庫應(yīng)用程序,在瀏覽器端發(fā)出對某一數(shù)據(jù)庫文件的請求,Web服務(wù)器接收到請求,不是直接通過應(yīng)用程序訪問數(shù)據(jù)庫,而是激活A(yù)SP進行各級安全性檢測。ASP利用ADO在服務(wù)器端創(chuàng)建連接對象,通過ODBC訪問后臺數(shù)據(jù)庫保存的用戶基本信息進行用戶鑒定,拒絕非法用戶訪問請求,對合法用戶根據(jù)其權(quán)限存取數(shù)據(jù)并返回處理結(jié)果。因此,根據(jù)基于Web的數(shù)據(jù)庫應(yīng)用系統(tǒng)的特點,可以采用安裝防火墻,用戶身份認(rèn)證和數(shù)據(jù)完整性認(rèn)證服務(wù),對機密敏感的數(shù)據(jù)進行加密存儲和傳輸,訪問控制機制,安全審計和監(jiān)視追蹤技術(shù),數(shù)據(jù)庫備份與故障恢復(fù)等安全管理結(jié)束來構(gòu)筑管理信息系統(tǒng)的安全體系。4.2Web數(shù)據(jù)庫安全管理技術(shù)構(gòu)筑安全可靠的Web數(shù)據(jù)庫應(yīng)用系統(tǒng)要從兩個方面考慮。首先要對構(gòu)筑Web數(shù)據(jù)庫的工作環(huán)境進行合理系統(tǒng)的安全配置,防止非法人員攻擊Web站點。這方面包括操作系統(tǒng)的安全問題、數(shù)據(jù)庫服務(wù)器的安全性、Web服務(wù)器的安全性以及如何有效的配置防火墻。只有將它們有機的結(jié)合起來,才能使Web數(shù)據(jù)庫建立在安全的工作環(huán)境中。其次要在編制Web數(shù)據(jù)庫應(yīng)用程序時,充分考慮安全性和容錯性能,以及在不同情況下應(yīng)付不同行為的能力。這方面包括設(shè)置登錄Web數(shù)據(jù)庫站點的用戶名和口令;為不同級別的用戶設(shè)定不同的操作權(quán)限,訪問各自的數(shù)據(jù)庫;一旦受到攻擊,能有效地記錄是哪個用戶什么時候侵入的;在服務(wù)器和客戶器端建立安全有效的傳輸通道;在傳輸過程中對數(shù)據(jù)進行加密;通過數(shù)字簽名來驗證用戶的真實性等。以上幾方面不是孤立的,而是相互聯(lián)系的,所以必須結(jié)合起來從多方面多層次考慮才能更好地構(gòu)筑安全可靠的Web數(shù)據(jù)庫應(yīng)用系統(tǒng)。4.2.1防火墻技術(shù)防火墻(Firewall)技術(shù)是一種訪問控制技術(shù),它是在內(nèi)部網(wǎng)絡(luò)(專用網(wǎng)絡(luò))和外部網(wǎng)絡(luò)(公用網(wǎng)絡(luò))之間(如Internet和Intranet之間)設(shè)立的一道“防護欄”,即在它們的界面上構(gòu)造一個保護層(或隔離層),阻止對信息資源的非法訪問,并強制所有的連接都必須經(jīng)過此保護層,從而提供了一個封閉的邏輯環(huán)境,保護內(nèi)部網(wǎng)絡(luò)免遭非法入侵。防火墻提供的服務(wù)主要有:保護那些易受攻擊的服務(wù):控制對特殊站點的訪問;集中化的安全管理;對網(wǎng)絡(luò)存取訪問進行審計。目前防火墻的主要技術(shù)有數(shù)據(jù)包過濾和代理服務(wù)等,這些技術(shù)可單獨使用,也可結(jié)合在一起共同使用。(1)包過濾技術(shù)它是基于路由器的技術(shù),包過濾型防火墻位于網(wǎng)絡(luò)層,它根據(jù)在系統(tǒng)內(nèi)部設(shè)置的訪問控制表,對通過網(wǎng)絡(luò)層的IP數(shù)據(jù)包進行選擇和過濾。通過對數(shù)據(jù)包包頭信息中的源IP地址、目的IP地址、源端口號、目的端口號的檢查,來確定該數(shù)據(jù)包是否合法,以決定是否允許它通過。包過濾只能限制一部分瀏覽器對數(shù)據(jù)庫的訪問,一些黑客仍可以利用Spoofing技術(shù),繞國資源路由器,創(chuàng)建帶有虛假IP地址的包進入Web站點,對數(shù)據(jù)庫進行侵犯,同時還缺乏審計,跟蹤及驗證功能。(2)代理技術(shù)代理服務(wù)技術(shù)是基于網(wǎng)絡(luò)應(yīng)用層的,作用于應(yīng)用層。其核心是運行于防火墻主機上的代理服務(wù)器進程,它代替網(wǎng)絡(luò)用戶完成特定的TCP/IP功能,一個代理服務(wù)器實際上是一個為特定網(wǎng)絡(luò)應(yīng)用而連接兩個網(wǎng)絡(luò)的網(wǎng)關(guān),對于每一種不同的應(yīng)用服務(wù),都必須有一個相應(yīng)的代理。外部網(wǎng)絡(luò)和內(nèi)部網(wǎng)絡(luò)之間要建立連接,必須通過代理的中間轉(zhuǎn)換,內(nèi)部網(wǎng)絡(luò)只接受代理服務(wù)提出的服務(wù)請求,拒絕外部網(wǎng)絡(luò)的直接連接。代理技術(shù)的優(yōu)點是它能完全控制通信雙方的會話過程,具有用戶級的身份驗證、日志管理和帳號管理功能,提供了比過濾路由器更為嚴(yán)格的安全性:缺點是缺乏透明性,影響網(wǎng)絡(luò),必須針對每一項服務(wù)都建立對應(yīng)的應(yīng)用層網(wǎng)關(guān),才能提供全面的安全保證,這勢必嚴(yán)重限制新應(yīng)用的引入和掛接。結(jié)合上述兩種防火墻技術(shù)的優(yōu)缺點,在實際構(gòu)建防火墻系統(tǒng)時,通常由過濾器提供第一級的安全防護,主要用于防止IP欺騙攻擊,再由代理服務(wù)器提供更高級的安全防護機制。防火墻技術(shù)雖然能提供一些安全保證,但是還不能滿足數(shù)據(jù)庫應(yīng)用系統(tǒng)對安全問題的實際要求,而且完整的數(shù)據(jù)庫安全機制應(yīng)對不用用戶賦予不同的訪問權(quán)限,建立不同視圖,因此應(yīng)將防火墻技術(shù)與其他數(shù)據(jù)庫安全機制結(jié)合起來。4.2.2身份認(rèn)證和授權(quán)控制基于Web的數(shù)據(jù)庫應(yīng)用系統(tǒng)中包含大量的敏感數(shù)據(jù)和機密數(shù)據(jù),為保證系統(tǒng)數(shù)據(jù)在存儲時和網(wǎng)絡(luò)傳輸時不被未經(jīng)授權(quán)的用戶訪問或解讀,可以利用用戶名來標(biāo)明用戶身份,經(jīng)系統(tǒng)鑒別用戶的合法性后,再利用口令進一步核實用戶身份。為保證口令的安全,在口令的提交過程中,可以不采用明文形式。具體方法是:可先對口令、用戶名進行加密后再傳送,服務(wù)器接受以后,對其進行解密?;蛘呃冒踩捉幼謪f(xié)議(SSL)加密方法,通過使用公共密鑰和對稱性加密提供非公開通信、身份驗證和信息繼承。這樣既可以簡化其復(fù)雜性,又可以保證其安全性,使客戶和服務(wù)器可以在一種防竊聽防干擾或防消息偽造的方式下通信。在Web應(yīng)用程序級,可利用身份認(rèn)證機制保護被限制的ASP內(nèi)容。要求每個試圖訪問被限制的ASP內(nèi)容的用戶必須擁有有效的WindowsNT帳號的用戶名和密碼,每當(dāng)用戶試圖防問被限制的內(nèi)容時,Web服務(wù)器將進行身份驗證,以檢查用戶是否擁有有效的WindowsNT帳號。在后臺數(shù)據(jù)庫中,用身份驗證機制進一步確認(rèn)用戶的合法性??山ser用戶表,其信息包括登錄名、口令、用戶名及訪問權(quán)限代碼。訪問權(quán)限代表了用戶能對數(shù)據(jù)庫進行讀取、插入、修改操作的權(quán)限組合。用戶在經(jīng)過IP地址過濾后,在WebBrowser端呈現(xiàn)用戶登錄界面。用戶在系統(tǒng)提示下輸入登錄名、口令,并提交輸入結(jié)果。WebServer在接受到瀏覽器請求后,激活A(yù)SP,通過ADO驅(qū)動ODBC與User數(shù)據(jù)庫建立連接,運行ASP處理程序?qū)⒂脩糨斎肱c數(shù)據(jù)庫記錄進行比較,若為合法用戶,則允許其根據(jù)權(quán)限訪問數(shù)據(jù)庫,否則將拒絕訪問請求或引導(dǎo)用戶注冊。由于基于Web的數(shù)據(jù)庫應(yīng)用程序運行在Internet的環(huán)境中,用戶完全有機會不在程序員控制之下,通過一些簡單操作繞過登錄頁面,躲避用戶名和口令的驗證,對數(shù)據(jù)庫安全構(gòu)成直接威脅。為了防止非法用戶進入,保護基于Web的數(shù)據(jù)庫安全性,可以利用Session對象和HTTPheaders信息來實現(xiàn)安全控制。ASP提供了Session內(nèi)置對象,對每個用戶請求激活不同的Session對象,Session變量在整個用戶工作期保持不變。因此,可以利用Session變量來保持特定用戶信息。當(dāng)用戶通過了用戶名和口令的驗證后,就把Session對象的SessionID屬性作為一個Session變量存儲起來。然后,當(dāng)每次用戶試圖導(dǎo)航到一種要求有效連接的頁面時,就可以比較當(dāng)前的SessionID與存儲在Session對象中的ID。如它們不匹配,就可以采用適當(dāng)?shù)男袆泳芙^訪問。以此種方法作為身份認(rèn)證是十分有效的,可以進一步完善ASP的安全機制。在瀏覽器向WebServer發(fā)出請求的同時包含了相當(dāng)數(shù)量的HTTP標(biāo)題頭域信息,如REMOTE_ADDR標(biāo)明提出請求的主機的Internet地址,HTTP_REFERER表示用戶到達當(dāng)前頁經(jīng)過的鏈接。因此可以為所有應(yīng)用程序創(chuàng)建用于IIS管理的統(tǒng)一目錄并保存路徑信息。各應(yīng)用程序均以<!--#Includevirtual="myfile.asa"-->方式先執(zhí)行Myfile.asa,通過判斷HTTP_REFERER信息,確定用戶的合法性。若用戶直接輸入URL或通過其它方式繞過用戶名、口令驗證,則拒絕訪問請求。由于Web應(yīng)用程序的基礎(chǔ)是一個個Web頁面,整個系統(tǒng)功能體現(xiàn)在每個頁面上,所有頁面的相互調(diào)用完成整個系統(tǒng)功能。但是,由于頁面的無記憶性和獨立性,使頁面的訪問實際是通過URL實現(xiàn),如果程序不對每個頁面進行合法性檢驗證包含文件是一個運行在服務(wù)器端的能訪問數(shù)據(jù)庫表查,那么非法用戶即使不知道用戶名和口令,但只要知道某些的URL,也可以跳過身份驗證的頁面去直接訪問后面的和數(shù)據(jù)處理的相關(guān)頁面,從而入侵到系統(tǒng)的核心數(shù)據(jù)庫中。針對上述問題,可在Web服務(wù)器上建立一個Web用戶訪問頁面的權(quán)限表,每一個訪問數(shù)據(jù)庫的頁面又和具體的數(shù)據(jù)庫表、用戶名和口令相對應(yīng),如要通過該頁面訪問某一數(shù)據(jù)庫表或?qū)?shù)據(jù)庫表實施某種操作,系統(tǒng)要求該數(shù)據(jù)庫表對應(yīng)的用戶名和口令必須和輸入的用戶名和口令一致,才允許其繼續(xù)進行。設(shè)想若跳過權(quán)限驗證的頁面去直接訪問后面的和數(shù)據(jù)處理的相關(guān)頁面,由于系統(tǒng)得不到從權(quán)限驗證頁面上來的用戶名和口令,系統(tǒng)將拒絕對數(shù)據(jù)庫表的操作。需要強調(diào)的是,一、權(quán)限驗證頁面每次重新顯現(xiàn),必須要求重新輸入用戶名和口令,也就是說,任何一次該頁面的重新出現(xiàn)或從其它頁面回退到該頁面,用戶名和口令輸入框必須自動清空。二、訪問數(shù)據(jù)庫表的頁面一旦操作完,該頁面的權(quán)限驗證值就自動作廢。這樣就保證了要操作數(shù)據(jù)的唯一通道,使合法用戶的數(shù)據(jù)得以安全保護。如何對網(wǎng)站的數(shù)據(jù)庫進行保護,如何防止訪問者看到他們沒有訪問權(quán)限的網(wǎng)頁,這都需要一個權(quán)限驗證系統(tǒng)。當(dāng)然,可以配置IIS,使用基本驗證模式或WindowsNTChallenge/Response驗證模式。使用兩種中的任一種驗證系統(tǒng),通過改變對文件的權(quán)限,可以強制用戶在訪問一個網(wǎng)頁之前輸入密碼。但是,不論使用基本驗證模式或WindowsNTChallenge/Response驗證模式,都存在一個問題。這兩種驗證系統(tǒng)都是與WindowsNT安全體系相分離的。這意味著每當(dāng)有新用戶注冊時,都需要手工添加用戶,而且不容易從網(wǎng)頁中訪問和修改密碼和用戶名。如果只是想通過密碼來保護自己的和其他管理員的特殊網(wǎng)頁,IIS提供的兩種驗證系統(tǒng)都是可行的。但是,假如你想在用戶提供了自己的權(quán)限級別信息后,自動為新用戶進行注冊,就需要在Web應(yīng)用系統(tǒng)中自己建立一個驗證系統(tǒng)。建立一個權(quán)限驗證系統(tǒng)。需要兩個數(shù)據(jù)庫表和一個文件:權(quán)限信息表:用來保存權(quán)限信息。驗證包含文件:每一個需要權(quán)限保護的網(wǎng)頁都要包含這個文件。權(quán)限信息表包含三個字段。第一個字段保存用戶名,第二個字段保存用戶密碼,第三個字段保存對應(yīng)權(quán)限級別。級別信息表包含兩個字段。第一個字段保存權(quán)限級別,第二個字段保存該級別對應(yīng)的頁面標(biāo)識。兩表的信息可由數(shù)據(jù)庫管理員進行管理。無論何時,當(dāng)一個訪問者試圖訪問一個權(quán)限保護的網(wǎng)頁時,將對這兩個表進行查詢,如果在表中查到你從權(quán)限驗證頁面上輸入的用戶名和口令,就可以訪問這個保護的頁面。驗證包含文件是一個運行在服務(wù)器端的能訪問數(shù)據(jù)庫表的Web文件,被包含在你想進行權(quán)限保護的每一個網(wǎng)頁頁面中。它提供用戶輸入名字和密碼的功能,然后到權(quán)限表中查詢輸入的名字和密碼。如果找不到,用戶將不能訪問該頁面。如果找到,則根據(jù)對應(yīng)的級別到級別信息表中查看該級別下是否有該頁面的標(biāo)識,如果沒有,用戶也不能訪問該頁面。一般情況下,對于大量的普通查詢用戶,系統(tǒng)應(yīng)提供自動注冊功能,使其具有查詢?yōu)g覽權(quán)限,即自動注冊的用戶,只能擁有這種最低級別的權(quán)限。其它權(quán)限級別不應(yīng)自動注冊。當(dāng)用戶注冊后,系統(tǒng)會自動將用戶名和口令寫入權(quán)限信息表,同時添入普通用戶級別碼。4.2.3監(jiān)視跟蹤和審計日志系統(tǒng)具有綜合性數(shù)據(jù)記錄功能和自動分類檢索能力。完整的日志不僅要包括用戶的各項操作,而且還要包括網(wǎng)絡(luò)中數(shù)據(jù)接受的正確性、有效性及合法性的檢查結(jié)果,為日后網(wǎng)絡(luò)安全分析提供可靠的依據(jù)。許多應(yīng)用程序的日志記錄只用于時候監(jiān)督,其實對日志的分析還可用與預(yù)防入侵,提高網(wǎng)絡(luò)安全。在數(shù)據(jù)庫應(yīng)用胸中,日志將記錄自用戶登錄開始起,直到退出系統(tǒng)為止,在這段時間中所執(zhí)行的所有操作包括登錄失敗操作、對數(shù)據(jù)庫的操作及系統(tǒng)功能的使用等。因此,必須建立完善的日志記錄功能。另外,還可利用現(xiàn)有的網(wǎng)絡(luò)監(jiān)視軟件進行日志記錄和信息跟蹤。例如,用日志監(jiān)視跟蹤可進行潛在“黑客”攻擊檢查、單帳號多用戶檢查和非工作時間操作檢查等。為了解決用戶躲避用戶名和口令的驗證,可采用對頁面用戶基本信息的跟蹤監(jiān)視,即采用ASP技術(shù)中的QueryString和Form的Hidden類型保存用戶基本信息。在每個應(yīng)用程序執(zhí)行前先跟蹤監(jiān)視用戶信息是否存在,若用戶直接以URL地址訪問數(shù)據(jù)庫則會因RequeryString.QueryString或Request.Form的值為空被拒絕。此方法可更進一步提高系統(tǒng)的安全性。審計主要是確??刹樾浴徲嬜鳛橐豁棸踩夹g(shù),對信息系統(tǒng)的安全有著很重要的作用。通過設(shè)置完善的審計機制,能及時提供與系統(tǒng)運行過程中的各種可疑現(xiàn)象有關(guān)的信息,供有關(guān)人員能及時發(fā)現(xiàn)隱患。審計功能可以記錄主體訪問客體的軌跡。記錄的內(nèi)容包括:站點使用情況、服務(wù)器工作情況、鏈接狀態(tài)、頁面使用情況、用戶情況、訪問時間、用戶、操作類型及是否成功等。為提高審計功能,必要時還需設(shè)置審計安全時間發(fā)生積累機制。當(dāng)超過一定閾值時,能立刻發(fā)出報警,以提示應(yīng)采取措施。采用審計功能,可以知道用戶正在使用的系統(tǒng)權(quán)限、使用的頻率、正在登錄的用戶數(shù)、會話平均持續(xù)時間、在特殊表上使用的命令以及很多其他有關(guān)事實。4.2.4存儲過程在基于Web的數(shù)據(jù)庫應(yīng)用系統(tǒng)中,可建立一個存儲過程,在使用時通過內(nèi)嵌的SQL命令來執(zhí)行。在存儲過程中,采用將用戶和數(shù)據(jù)分開的方法。這種方法不允許任何對表的完全訪問和更新,只是提供實現(xiàn)與表交互的存儲過程。用戶把參數(shù)提供給插入存儲過程。插入存儲過程即為它們執(zhí)行插入操作。用戶提供檢索的條件,檢索存儲過程返回找到的數(shù)據(jù)行。這個辦法的好處在于它完全控制了信息的存儲和檢索,任何不想讓用戶訪問的列都可以被忽略,任何插入之前所需要做的附加處理都可以做到。這對于數(shù)據(jù)存儲和檢索來說,是一個帶有更多地面向?qū)ο箫L(fēng)格的方法,它有助于保證數(shù)據(jù)的正確與安全。4.2.5備份與故障恢復(fù)即使采取了很多安全措施,也難保數(shù)據(jù)庫的萬無一失。因安全是相對的,不安全才是絕對的。為了在數(shù)據(jù)庫攻破后,能盡快恢復(fù)系統(tǒng)并找出入侵者,我們還必須做好系統(tǒng)數(shù)據(jù)備份。備份與故障恢復(fù)是實現(xiàn)信息系統(tǒng)安全運行的重要技術(shù)之一,是確保信息系統(tǒng)因各種不測時間受到破壞時,能盡快投入再使用的重要保證。按照信息系統(tǒng)所受到的破壞程度,需要采取不同的恢復(fù)措施,對備份的要求也有所不同。為了對付災(zāi)難性的破壞,可以設(shè)置主機系統(tǒng)的遠地系統(tǒng)備份,以備主機系統(tǒng)不能正常運行時啟用。當(dāng)系統(tǒng)受到非災(zāi)難性的破壞時,主機系統(tǒng)可通過專用備份設(shè)備,進行全系統(tǒng)備份、部分系統(tǒng)備份和增量信息備份,以確保系統(tǒng)停機后經(jīng)過嘗新啟動即可正常運行,而且不會造成有用信息的丟失。當(dāng)前,計算機軟、硬件系統(tǒng)的可靠性有了很大的改善,而且還可以采用磁盤陣列等設(shè)備來提高系統(tǒng)的容錯能力,這更進一步提高了系統(tǒng)的可靠性。然而這些措施不可能是完美的,也無法保證系統(tǒng)的安全做到萬無一失,它們只能在一定程度上減少存儲介質(zhì)故障而帶來的損失。而且對于操作人員的意外操作或蓄意的破壞性操作、破壞性病毒的攻擊、自然災(zāi)害等原因所引起的系統(tǒng)故障,以上措施還無能為力。定期進行數(shù)據(jù)備份是保證系統(tǒng)安全的一項重要措施。在意外的情況發(fā)生時,可以依靠備份數(shù)據(jù)來恢復(fù)數(shù)據(jù)庫。目前,最快的然而是最昂貴的保護是準(zhǔn)備一個備份服務(wù)器隨時替代主服務(wù)器,備份服務(wù)器必須能支持MicrosoftSQLServer運行,并能完整備份所有數(shù)據(jù)庫、系統(tǒng)和用戶帳戶,因為事務(wù)處理日志和數(shù)據(jù)庫的轉(zhuǎn)儲由主服務(wù)器創(chuàng)建,所以它們必須迅速地裝載到備份服務(wù)器上,如果主服務(wù)器需要中止工作一段時間,只需投入備份服務(wù)器替代主服務(wù)器即可,備份服務(wù)器將接管事務(wù)處理日志,就好象什么事情也沒發(fā)生過。這就是服務(wù)器鏡像備份,也稱為雙機熱備份。因基于成本或其他原因考慮,尤其是雙機熱備份(專門使用一個與服務(wù)器配置一樣的計算機為備份服務(wù)器)采用者較少,因此采用異機備份的策略,是最好最經(jīng)濟的備份方式,特別是當(dāng)服務(wù)器崩潰或MicrosoftSQLServer系統(tǒng)崩潰時,此時除了雙機熱備份可以啟用備份服務(wù)器直接使用外,通過其他的各種備份策略(不包括異機備份策略)必須重裝服務(wù)器操作系統(tǒng)(MicrosoftWindowsNT)或重裝MicrosoftSQLServer。采用異機備份策略,則不必擔(dān)心,這時只需待裝好MicrosoftSQLServer后,從異機傳送數(shù)據(jù)恢復(fù)即可。具體的做法為:在局域網(wǎng)內(nèi)的任何一臺工作站計算機上安裝MicrosoftWindowsNT及MicrosoftSQLServer,并在該機上建立一個與服務(wù)器中的數(shù)據(jù)庫同名的數(shù)據(jù)庫,利用MicrosoftSQLServer系統(tǒng)本身提供的異機傳送工具(在MicrosoftSQLEnterpriseManager中的Tools菜單下的Database/ObjectTransfer),通過設(shè)置定時(可以是每月、每周、每日或每時),由計算機自動把服務(wù)器中的數(shù)據(jù)庫的數(shù)據(jù)傳送到該工作站機的數(shù)據(jù)庫中,這樣一旦服務(wù)器(操作系統(tǒng))崩潰或MicrosoftSQLServer系統(tǒng)崩潰時,只要重裝服務(wù)器操作系統(tǒng)(MicrosoftWindowsNT)或重裝MicrosoftSQLServer,仍然可以采用異機傳送工具來通過該工作站把數(shù)據(jù)傳回至服務(wù)器的MicrosoftSQLServer數(shù)據(jù)庫中,以確保數(shù)據(jù)的安全恢復(fù)。4.3案例分析我們知道,SQL是一種結(jié)構(gòu)化查詢語言,功能相當(dāng)強大,基于Web腳本語言+后臺書系統(tǒng)的動態(tài)網(wǎng)站多通過SQL語言來查詢數(shù)據(jù)庫和更新數(shù)據(jù)庫。我們在瀏覽這些網(wǎng)頁時通常要提交一些信息,比如用戶登錄名、密碼,信息條目的ID等,服務(wù)器應(yīng)用程序就會對瀏覽器提交的數(shù)據(jù)進行處理,然后返回相應(yīng)的信息給瀏覽器。我們這里舉一個驗證登錄的例子來說明SQL注入的原理。假設(shè)某網(wǎng)站的數(shù)據(jù)庫中有一個login表用來存放用戶的登錄信息,包含username、password等字段,網(wǎng)站的應(yīng)用程序根據(jù)用戶提交的數(shù)據(jù)生成SQL查詢語句,如果查詢返回的記錄>1,那么用戶就通過驗證,反之登錄失敗。設(shè)用戶提交的用戶名為:abc,密碼為:“123”,則生成SQL語句:select*formloginwhereusername=‘a(chǎn)bc’andpassword=‘123’。如果login表中存在username為“abc”而密碼為“123”的用戶,那么就登錄成功,這是正常的情況。但是,如果用戶提交的用戶名為:“abc’or‘’=‘”,密碼為:“123’or‘’=‘”時又怎么樣呢?此時生成的SQL語句為:select*fromloginwhereusername=‘a(chǎn)bc’or‘’=‘’andpassword=‘123’or‘’=‘’。此時不管login表中是否存在username為“abc”密碼為“123”的用戶,只要login表中有記錄,都將登錄成功,因為‘’==‘’(空字符=空字符)恒成立。我們發(fā)現(xiàn)數(shù)據(jù)庫服務(wù)器并不是將我們提交的用戶名僅僅當(dāng)作用戶名來處理,而是將之分成兩段,取“abc’”當(dāng)成用戶名,構(gòu)成邏輯關(guān)系式username=‘a(chǎn)bc’,并將余下部分“or‘’=‘’”與之共同組成邏輯或關(guān)系式:username=‘a(chǎn)bc’or‘’=‘’,顯然,此關(guān)系式恒為真;同樣,對我們提交的密碼也是如此處理。也就是說,上述SQL語句的where子句被分析為:where[(username=‘a(chǎn)bc’)or(‘’=‘’)]and[(password=‘123’)or(‘’=‘’)]。對于任何記錄,此邏輯關(guān)

溫馨提示

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

評論

0/150

提交評論