全面解析Web安全原理與技術
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
[導讀]Web服務是指采用B/S架構、通過Http協(xié)議提供服務的統(tǒng)稱,這種結構也稱為Web架構,隨著Web2.0的發(fā)展,出現(xiàn)了數(shù)據(jù)與服務處理分離、服務與數(shù)據(jù)分布式等變化,其交互性能也大大增強,也有人叫B/S/D三層結構。 Web服務是指采用B/S架構、通過Http協(xié)議提供服務的統(tǒng)稱,這種結構也稱為Web架構,隨著Web2.0的發(fā)展,出現(xiàn)了數(shù)據(jù)與服務處理分離、服務與數(shù)據(jù)分布式等變化,其交互性能也大大增強,也有人叫B/S/D三層結構?;ヂ?lián)網(wǎng)能夠快速流行得益于Web部署上的簡單,開發(fā)上簡便,Web網(wǎng)頁的開發(fā)大軍迅速超過了以往任何計算機語言的愛好者,普及帶來了應用上繁榮。J2EE與.NET的殊途同歸,為Web流行掃清了廠家與標準的差異;眾望所歸,SOA選中Web2.0作為其實現(xiàn)的基本工具之一(使用最廣的),Web架構從互聯(lián)網(wǎng)走進了企業(yè)內部網(wǎng)絡,新業(yè)務系統(tǒng)的開發(fā),越來越多的系統(tǒng)架構師選擇了Web架構,與熟悉它的人如此廣泛是分不開的。事實再一次證明了那個經典的理論:簡潔的最容易流行。 簡單與安全好象總有些“矛盾”,瀏覽器可以直接看到頁面的Html代碼,早期的Web服務設計沒有過多的安全考慮,人性本善,技術人員總是相信人都是善良的!但隨著Web2.0的廣泛使用,Web服務不再只是信息發(fā)布,游戲中的裝備交易、日常生活中網(wǎng)上購物、政府行政審批、企業(yè)資源管理…信息價值的誘惑,人的貪婪開始顯現(xiàn),不是所有的人都有Web設計者的“大同”思想,安全問題日顯突出了。 2008年網(wǎng)絡安全事件統(tǒng)計最多是:SQL注入與“網(wǎng)頁掛馬(木馬)”。因為這是“僵尸”網(wǎng)絡發(fā)展新“會員”的基本工具,而僵尸網(wǎng)絡的經濟與政治“價值”,這里就不用說了。SQL注入與“網(wǎng)頁掛馬”主要就是針對Web服務的,傳統(tǒng)的安全產品(UTM/IPS)都有些力不從心。 互聯(lián)網(wǎng)是個人思想展現(xiàn)的樂園,也是世界級的、虛擬的“另一個”社會,既然大家都是虛擬的、帶著面具的,要變成現(xiàn)實社會中的真實利益,還需要一些轉換才可以兌現(xiàn),但SOA把Web架構帶入企業(yè)內部網(wǎng)絡,這里的網(wǎng)絡世界是“真實的”,利益是可以直接兌現(xiàn)的,Web安全問題變得刻不容緩。 二、Web架構原理 要保護Web服務,先要了解Web系統(tǒng)架構,下圖是Web服務的一般性結構圖,適用于互聯(lián)網(wǎng)上的網(wǎng)站,也適用于企業(yè)內網(wǎng)上的Web應用架構: 用戶使用通用的Web瀏覽器,通過接入網(wǎng)絡(網(wǎng)站的接入則是互聯(lián)網(wǎng))連接到Web服務器上。用戶發(fā)出請求,服務器根據(jù)請求的URL的地址連接,找到對應的網(wǎng)頁文件,發(fā)送給用戶,兩者對話的“官方語言”是Http。網(wǎng)頁文件是用文本描述的,HTML/Xml格式,在用戶瀏覽器中有個解釋器,把這些文本描述的頁面恢復成圖文并茂、有聲有影的可視頁面。 通常情況下,用戶要訪問的頁面都存在Web服務器的某個固定目錄下,是一些.html或.xml文件,用戶通過頁面上的“超連接”(其實就是URL地址)可以在網(wǎng)站頁面之間“跳躍”,這就是靜態(tài)的網(wǎng)頁。后來人們覺得這種方式只能單向地給用戶展示信息,信息發(fā)布還可以,但讓用戶做一些比如身份認證、投票選舉之類的事情就比較麻煩,由此產生了動態(tài)網(wǎng)頁的概念;所謂動態(tài)就是利用flash、Php、asp、Java等技術在網(wǎng)頁中嵌入一些可運行的“小程序”,用戶瀏覽器在解釋頁面時,看到這些小程序就啟動運行它。小程序的用法很靈活,可以展示一段動畫(如Flash),也可以在你的PC上生成一個文件,或者接收你輸入的一段信息,這樣就可以根據(jù)你的“想法”,對頁面進行定制處理,讓你每次來到時,看到的是你上次設計好的特有風格,“貴賓的感覺”是每個人都喜歡的,更何況虛擬的網(wǎng)絡世界中,你不認識的人還對你如此“敬仰”,服務得如此體貼…… “小程序”的使用讓Web服務模式有了“雙向交流”的能力,Web服務模式也可以象傳統(tǒng)軟件一樣進行各種事務處理,如編輯文件、利息計算、提交表格等,Web架構的適用面大大擴展,Web2.0可以成為SOA架構的實現(xiàn)技術之一,這個“小程序”是功不可沒的。 這些“小程序”可以嵌入在頁面中,也可以以文件的形式單獨存放在Web服務器的目錄里,如.asp、.php、jsp文件等,并且可以在開發(fā)時指定是在用戶端運行,還是在服務器端運行;用戶不再能看到這些小程序的源代碼,服務的安全性也大大提高。這樣功能性的小程序越來越多,形成常用的工具包,單獨管理,Web業(yè)務開發(fā)時,直接使用就可以了,這就是中間件服務器,它實際上是Web服務器處理能力的擴展。 靜態(tài)網(wǎng)頁與“小程序”都是事前設計好的,一般不經常改動,但網(wǎng)站上很多內容需要經常的更新,如新聞、博客文章、互動游戲等,這些變動的數(shù)據(jù)放在靜態(tài)的程序中顯然不適合,傳統(tǒng)的辦法是數(shù)據(jù)與程序分離,采用專業(yè)的數(shù)據(jù)庫。Web開發(fā)者在Web服務器后邊增加了一個數(shù)據(jù)庫服務器,這些經常變化的數(shù)據(jù)存進數(shù)據(jù)庫,可以隨時更新。當用戶請求頁面時,“小程序”根據(jù)用戶要求的頁面,涉及到動態(tài)數(shù)據(jù)的地方,利用SQL數(shù)據(jù)庫語言,從數(shù)據(jù)中讀取最新的數(shù)據(jù),生成“完整”頁面,最后送給用戶,如股市行情曲線,就是由一個不斷刷新的小程序控制。 除了應用數(shù)據(jù)需要變化,用戶的一些狀態(tài)信息、屬性信息也需要臨時記錄(因為每個用戶都是不同的),而Web服務器本來是不記錄這些信息的,只管答復你的要求,“人一走茶就涼了”。后來Web技術為了“友好”互動,需要“記住”用戶的訪問信息,建立了一些“新”的通訊機制: Cookie:把一些用戶的參數(shù),如帳戶名、口令等信息存放在客戶端的硬盤臨時文件中,用戶再次訪問這個網(wǎng)站時,參數(shù)也一同送給服務器,服務器就知道你就是上次來的那個“家伙”了。 Session:把用戶的一些參數(shù)信息存在服務器的內存中,或寫在服務器的硬盤文件中,用戶是不可見的,這樣用戶用不同電腦訪問時的貴賓待遇就同樣了,Web服務器總能記住你的“樣子”,一般情況下,Cookie與Session可以結合使用?! ookie在用戶端,一般采用加密方式存放就可以了;Session在服務器端,信息集中,被篡改問題將很嚴重,所以一般放在內存里管理,盡量不存放在硬盤上。 到此,我們清楚了,Web服務器上有兩種服務用數(shù)據(jù)要保證“清白”,一是頁面文件(.html、.xml等),這里包括動態(tài)程序文件(.php、.asp、.jsp等),一般存在Web服務器的特定目錄中,或是中間間服務器上;二是后臺的數(shù)據(jù)庫,如Oracle、SQL Server等,其中存放的數(shù)據(jù)的動態(tài)網(wǎng)頁生成時需要的,也有業(yè)務管理數(shù)據(jù)、經營數(shù)據(jù)。 還有一個問題應該提一下,就是瀏覽器給用戶電腦帶來的安全問題,因為Web可以對本地的進程、硬盤操作,可以把木馬、病毒放到你的電腦上來,Web架構中使用“沙漏”技術提供安全保護,就是限制頁面中“小程序”的本地讀寫權限,但限制畢竟不能不讓其“工作”,所以多數(shù)情況下在寫入時給出提示,讓你自己選擇,大家經常看見有進程在安裝程序進入你的電腦,但絕大多數(shù)人分不清是否應該,要么一概不許,造成很多事情做不了(很多下載與游戲就只能看著),要么“大膽”接受,大門敞開,聽天由命。這里主要分析服務器端的安全,客戶端的安全再行考慮。 三、Web架構中的安全點分析 從Web架構上可以看出,Web服務器是必經的大門,進了大門,還有很多服務器需要保護,如中間件服務器、數(shù)據(jù)庫服務器等。我們這里不考慮網(wǎng)絡內部人員的攻擊,只考慮從接入網(wǎng)(或互聯(lián)網(wǎng))來的攻擊,入侵者入侵的通道有下面幾個: 1、服務器系統(tǒng)漏洞:Web服務器畢竟的一個通用的服務器,無論是Windows,還是Linux/Unix,都不可少的帶有系統(tǒng)自身的漏洞,通過這些漏洞入侵,可以獲得服務器的高級權限,當然對服務器上運行的Web服務就可以隨意控制了。除了OS的漏洞,還有Web服務軟件的漏洞,IIS也好,Tomcat也好,同樣需要不斷地打補丁。 2、Web服務應用漏洞:如果說系統(tǒng)級的軟件漏洞被關注的人太多了,那么Web應用軟件的漏洞數(shù)量上就更多了,因為Web服務開發(fā)簡單,開發(fā)的團隊參差不齊,并非都是“專業(yè)”的高手,編程不規(guī)范、安全意識不強、因為開發(fā)時間緊張而簡化測試等,應用程序的漏洞也同樣可以讓入侵者來去自如。最為常見的SQL注入,就是因為大多應用編程過程中產生的漏洞。 3、密碼暴力破解:漏洞會招來攻擊容易理解,但畢竟需要高超的技術水平,破解密碼卻十分有效,而且簡單易行。一般來說帳號信息容易獲得,剩下的就是猜測密碼了,由于使用復雜密碼是件麻煩而又“討厭”的事,設置容易記憶的密碼,是絕大多數(shù)用戶的選擇。大多Web服務是靠“帳號+密碼”的方式管理用戶帳戶,一旦破解密碼,尤其是遠程管理者的密碼,破壞程度難以想象,并且其攻擊難度比通過漏洞方式要簡單的多,而且不容易被發(fā)覺。在知名的網(wǎng)絡經濟案例中,通過密碼入侵的占了接近一半的比例。 入侵者進入Web系統(tǒng),其動作行為目的性是十分明確的: 讓網(wǎng)站癱瘓:網(wǎng)站癱瘓是讓服務中斷。使用DDOS攻擊都可以讓網(wǎng)站癱瘓,但對Web服務內部沒有損害,而網(wǎng)絡入侵,可以刪除文件、停止進程,讓Web服務器徹底無法恢復。一般來說,這種做法是索要金錢或惡意競爭的要挾,也可能是顯示他的技術高超,拿你的網(wǎng)站被攻擊作為宣傳他的工具。 篡改網(wǎng)頁:修改網(wǎng)站的頁面顯示,是相對比較容易的,也是公眾容易知道的攻擊效果,對于攻擊者來說,沒有什么“實惠”好處,主要是炫耀自己,當然對于政府等網(wǎng)站,形象問題是很嚴重的。 掛木馬:這種入侵對網(wǎng)站不產生產生直接破壞,而是對訪問網(wǎng)站的用戶進行攻擊,掛木馬的最大“實惠”是收集僵尸網(wǎng)絡的“肉雞”,一個知名網(wǎng)站的首頁傳播木馬的速度是爆炸式的。掛木馬容易被網(wǎng)站管理者發(fā)覺,XSS(跨站攻擊)是新的傾向。 篡改數(shù)據(jù):這是最危險的攻擊者,篡改網(wǎng)站數(shù)據(jù)庫,或者是動態(tài)頁面的控制程序,表面上沒有什么變化,很不容易發(fā)覺,是最常見的經濟利益入侵。數(shù)據(jù)篡改的危害是難以估量的,比如:購物網(wǎng)站可以修改你帳號金額或交易記錄,政府審批網(wǎng)站可以修改行政審批結果,企業(yè)ERP可以修改銷售定單或成交價格… 有人說采用加密協(xié)議可以防止入侵,如https協(xié)議,這種說法是不準確的。首先Web服務是面向大眾的,不可以完全使用加密方式,在企業(yè)內部的Web服務上可以采用,但大家都是“內部人員”,加密方式是共知的;其次,加密可以防止別人“竊聽”,但入侵者可以冒充正規(guī)用戶,一樣可以入侵;再者,“中間人劫持”同樣可以竊聽加密的通訊。 該文章在 2011/3/19 8:56:22 編輯過 |
關鍵字查詢
相關文章
正在查詢... |