摘要 Web應(yīng)用程序及Web站點往往很易遭受到各種各樣的入侵,Web數(shù)據(jù)在網(wǎng)絡(luò)傳輸過程中也很容易被竊取或盜用。因此如何能夠使Web及數(shù)據(jù)傳輸更加安全,非常重要。本文主要分析攻擊的技術(shù)及防范的方法。
關(guān)鍵詞 Web 瀏覽器 防范措施 安全
在某種程度上可以說,沒有Web就沒有Internet。然而Web應(yīng)用程序及Web站點往往很易遭受到各種各樣的入侵,Web數(shù)據(jù)在網(wǎng)絡(luò)傳輸過程中也很容易被竊取或盜用。因此如何能夠使Web及數(shù)據(jù)傳輸更加安全,這我們要解決的問題。一般情況下,入侵者入侵Web的主要目的在于:非法竊取、偽裝成Web站點的合法訪問者、偽裝成Web站點管理員、試圖控制Web站點主機。
阻止Web入侵者的監(jiān)聽行為的最有效方法就是要對Web站點和訪問者之間建立的聯(lián)接進行有效的加密。幾乎所有的Web瀏覽器和服務(wù)器都具備發(fā)送和接收加密通道上的數(shù)據(jù)的能力,這些加密數(shù)據(jù)被SSL和TLS這兩個相關(guān)的協(xié)議管理。其中SSL由Netscape產(chǎn)生,TLS與SSL3.0兼容。
Web瀏覽器在連接一般的Web站點時通常使用的是HTTP,地址欄中URL一般形式為“http://www.XXX.com”。而當(dāng)Web瀏覽器連接到一個安全站點時,瀏覽器將使用S-HTTP來建立一個加密連接,地址欄中的URL通常的形式為“https://www.xxx.com”。為了建立一個安全連接,Web瀏覽器需要首先向Web服務(wù)器請求數(shù)字證書。數(shù)字證書提供了身份證明。瀏覽器在向Web服務(wù)器請求它的數(shù)字證書時,也同時發(fā)送了它所支持的加密算法列表,當(dāng)服務(wù)器回送數(shù)字證書和它所選擇的加密算法后,瀏覽器通過檢查數(shù)字簽名和確認URL是否與數(shù)字證明的公有名字域相匹配來驗證數(shù)字證書。如果這些測試失敗,瀏覽器將顯示警告信息。
瀏覽器和服務(wù)器的通信使用對稱加密。這就意味著使用相同的密鑰來進行加密和解密。當(dāng)服務(wù)器的證書被證實后,瀏覽器將產(chǎn)生一個密鑰,這個密鑰需要通過一個安全的途徑傳遞給服務(wù)器。一般使用雙重加密技術(shù)來完成密鑰的傳遞。瀏覽器使用服務(wù)器的公鑰來加密密鑰,然后把它傳遞給服務(wù)器。服務(wù)器使用它的私鑰來解密密鑰,然后向瀏覽器發(fā)送確認。這個過程就是一個加密連接。瀏覽器和服務(wù)器都擁有相同的密鑰,它們使用相同的加密算法。他們后面的通信將使用這個加密的連接。瀏覽器顯示一個黃色的鎖的圖標時,表示連接已建立。建立一個加密連接,僅需要服務(wù)器獲得權(quán)威機構(gòu)頒發(fā)的證書。但是加密僅能阻止入侵者看到站點發(fā)送和接收的數(shù)據(jù),它并不能阻止入侵者偽造身份和對站點進行的惡意入侵。
對于入侵者偽裝成合法的訪問者所造成的安全隱患,涉及到一個站點如何鑒別它的訪問者的問題。大部分Web服務(wù)器支持兩個密碼鑒別方案:基本密碼鑒別和分類密碼鑒別。兩個方案都通過向瀏覽器發(fā)送鑒別信號來進行。當(dāng)瀏覽器第一次收到鑒別信號時,它顯示一個對話框詢問用戶的名字和密碼。在基本鑒別模式中瀏覽器以簡單的文本形式來傳遞用戶名和密碼。在分類鑒別模式中,瀏覽器傳送用戶名和密碼的消息類,如果服務(wù)器發(fā)送它的信息,瀏覽器就把登錄信息存儲起來。如果用Web服務(wù)器上的簡單設(shè)置來實現(xiàn)這些鑒定方案,Web應(yīng)用程序中不需要添加任何代碼。如果訪問者以簡單的文本形式發(fā)送他的用戶名和密碼,入侵者很容易就可捕獲到這些信息。傳送用戶信息使用SSL可以很容易地解決這個問題。如果入侵者不能監(jiān)聽Web站點和訪問者之間的通信,很可能會偽裝成合法訪問者。造成這種情況出現(xiàn)的原因往往在于用戶本身,因為大部分網(wǎng)絡(luò)用戶在密碼選取上不是很用心,使用的密碼一般都不是很安全的。他們在登錄各個站點時,喜歡使用相同的用戶名和密碼。
解決這個問題的方法就是訪問者在注冊賬號時要使用安全的密碼。Web站點最好具有能阻止訪問者設(shè)置英文單詞作為密碼的功能,它可以建議用戶使用數(shù)字和字母混合而成的密碼。當(dāng)訪問者登錄到站點時,服務(wù)器會保持用戶的身份一直有效,直到他們離開該站點。因為在瀏覽器和服務(wù)器之間不會建立一個永久的連接,所以服務(wù)器會在收到每個頁面請求后只建立一個單獨的連接。瀏覽器保存了用戶的姓名和密碼,當(dāng)瀏覽器和服務(wù)器再次連接時,瀏覽器將傳遞已經(jīng)存儲過的用戶名和密碼。服務(wù)器利用用戶數(shù)據(jù)庫來證實這些信息,并會在此基礎(chǔ)上作出允許和拒絕訪問的決定。
瀏覽器通過比較帶有數(shù)字證書的公有名字URL來證實服務(wù)器的身份。這是一個很好的Web安全防范措施。但是它不能避免所有的偽裝服務(wù)器的入侵。域名服務(wù)系統(tǒng)(DNs河把易讀的網(wǎng)址解析為IP地址,但是在安全鏈接中它是一個易遭受人侵的環(huán)節(jié)。如果入侵者訪問了一個DNS服務(wù)器,并且修改了指向他的主機的記錄。那么這個主機就可以把所有來自站點的請求全部重新定向到入侵者所修改的主機上。在重新定向中,訪問者的瀏覽器將顯示默認的地址后綴。如果字符串很長,大部分訪問者都不會注意到。
一些人侵者利用Web服務(wù)器上運行的軟件的漏洞來讓服務(wù)器執(zhí)行人侵者的代碼。例如向緩存寫人大量的數(shù)據(jù)從而使緩存器崩潰。如果入侵者在緩存中寫入了太多的數(shù)據(jù),它將覆蓋函數(shù)調(diào)用記錄。這個數(shù)據(jù)結(jié)構(gòu)包含了緩存函數(shù)人口代碼的寄存器,還有函數(shù)的返回地址。如果入侵者的代碼覆蓋了函數(shù)的返回地址,入侵者就可以在用戶的計算機上執(zhí)行任何代碼。其使用最多的方法是把代碼寫進數(shù)據(jù)緩存,而傳遞函數(shù)的字符串很容易感染上“特洛伊木馬”這樣的黑客程序。黑客知道易入侵的函數(shù)通常易被回應(yīng)用戶輸入的代碼所調(diào)用。入侵者發(fā)送一個足夠字符串給服務(wù)器。如果緩存溢出,處理此請求的線程將崩潰。入侵者得到HTTP超時的消息提示就表明請求線程已被破壞。
要阻止Web站點的應(yīng)用程序被利用,首先應(yīng)給系統(tǒng)軟件添加最新的安全補丁。然后檢查使用允許直接訪問內(nèi)存的語言編寫的程序代碼,看是否有安全漏洞。程序員最好不要使用直接訪問內(nèi)存的語言來編寫代碼,這樣就不會導(dǎo)致緩沖溢出入侵??梢允褂靡恍┠_本語言或使用解釋性語言來編寫代碼。
總之,Web的安全還包括也多方面如CGI、ActiveX、E-mail、Cookies等,因此廣大用戶、網(wǎng)絡(luò)和安全管理人員,重視Web的安全的各個方面,不僅僅強調(diào)安全產(chǎn)品和技術(shù),更要強調(diào)安全流程管理和組織體系以及內(nèi)部培訓(xùn),將安全隱患消滅在萌芽狀態(tài)。
參考文獻:
1 韋錕,淺談Web的安全威脅與安全防護,科學(xué)咨詢(決策管理),2010,(01):77-78
2 吳岳,WEB服務(wù)器的安全加固措施研究,科技創(chuàng)新導(dǎo)報,2010,(01):22
3 王鵬,蘇仲波,淺析防火墻技術(shù)及攻防策略,赤峰學(xué)院學(xué)報(自然科學(xué)版),2009,(01)
4 金尚柱,崔軒輝,對計算機網(wǎng)絡(luò)安全問題的探討,重慶工業(yè)高等專科學(xué)校學(xué)報,2003,(04)