Web安全(上)---Web架構分析 ZZ

 

Jack zhai

一、 Web安全不僅僅是互聯網才需要

 Web服務是指採用B/S架構、通過Http協議提供服務的統稱,這種結構也稱爲Web架構,隨着Web2.0的發展,出現了數據與服務處理分離、服務與數據分佈式等變化,其交互性能也大大增強,也有人叫B/S/D三層結構。互聯網能夠快速流行得益於Web部署上的簡單,開發上簡便,Web網頁的開發大軍迅速超過了以往任何計算機語言的愛好者,普及帶來了應用上繁榮。J2EE.NET的殊途同歸,爲Web流行掃清了廠家與標準的差異;衆望所歸,SOA選中Web2.0作爲其實現的基本工具之一(使用最廣的)Web架構從互聯網走進了企業內部網絡,新業務系統的開發,越來越多的系統架構師選擇了Web架構,與熟悉它的人如此廣泛是分不開的。事實再一次證明了那個經典的理論:簡潔的最容易流行。
 簡單與安全好象總有些“矛盾”,瀏覽器可以直接看到頁面的Html代碼,早期的Web服務設計沒有過多的安全考慮,人性本善,技術人員總是相信人都是善良的!但隨着Web2.0的廣泛使用,Web服務不再只是信息發佈,遊戲中的裝備交易、日常生活中網上購物、政府行政審批、企業資源管理信息價值的誘惑,人的貪婪開始顯現,不是所有的人都有Web設計者的“大同”思想,安全問題日顯突出了。
2008年網絡安全事件統計最多是:SQL注入與“網頁掛馬(***)”。因爲這是“殭屍”網絡發展新“會員”的基本工具,而殭屍網絡的經濟與政治“價值”,這裏就不用說了。SQL注入與“網頁掛馬”主要就是針對Web服務的,傳統的安全產品(UTM/IPS)都有些力不從心。
互聯網是個人思想展現的樂園,也是世界級的、虛擬的“另一個”社會,既然大家都是虛擬的、帶着面具的,要變成現實社會中的真實利益,還需要一些轉換纔可以兌現,但SOAWeb架構帶入企業內部網絡,這裏的網絡世界是“真實的”,利益是可以直接兌現的,Web安全問題變得刻不容緩。

 

二、 Web架構原理

要保護Web服務,先要了解Web系統架構,下圖是Web服務的一般性結構圖,適用於互聯網上的網站,也適用於企業內網上的Web應用架構:
 
用戶使用通用的Web瀏覽器,通過接入網絡(網站的接入則是互聯網)連接到Web服務器上。用戶發出請求,服務器根據請求的URL的地址連接,找到對應的網頁文件,發送給用戶,兩者對話的“官方語言”是Http。網頁文件是用文本描述的,HTML/Xml格式,在用戶瀏覽器中有個解釋器,把這些文本描述的頁面恢復成圖文並茂、有聲有影的可視頁面。
通常情況下,用戶要訪問的頁面都存在Web服務器的某個固定目錄下,是一些.html.xml文件,用戶通過頁面上的“超連接”(其實就是URL地址)可以在網站頁面之間“跳躍”,這就是靜態的網頁。後來人們覺得這種方式只能單向地給用戶展示信息,信息發佈還可以,但讓用戶做一些比如身份認證、投票選舉之類的事情就比較麻煩,由此產生了動態網頁的概念;所謂動態就是利用flashPhpaspJava等技術在網頁中嵌入一些可運行的“小程序”,用戶瀏覽器在解釋頁面時,看到這些小程序就啓動運行它。小程序的用法很靈活,可以展示一段動畫(Flash),也可以在你的PC上生成一個文件,或者接收你輸入的一段信息,這樣就可以根據你的“想法”,對頁面進行定製處理,讓你每次來到時,看到的是你上次設計好的特有風格,“貴賓的感覺”是每個人都喜歡的,更何況虛擬的網絡世界中,你不認識的人還對你如此“敬仰”,服務得如此體貼
“小程序”的使用讓Web服務模式有了“雙向交流”的能力,Web服務模式也可以象傳統軟件一樣進行各種事務處理,如編輯文件、利息計算、提交表格等,Web架構的適用面大大擴展,Web2.0可以成爲SOA架構的實現技術之一,這個“小程序”是功不可沒的。
這些“小程序”可以嵌入在頁面中,也可以以文件的形式單獨存放在Web服務器的目錄裏,如.asp.phpjsp文件等,並且可以在開發時指定是在用戶端運行,還是在服務器端運行;用戶不再能看到這些小程序的源代碼,服務的安全性也大大提高。這樣功能性的小程序越來越多,形成常用的工具包,單獨管理,Web業務開發時,直接使用就可以了,這就是中間件服務器,它實際上是Web服務器處理能力的擴展。
靜態網頁與“小程序”都是事前設計好的,一般不經常改動,但網站上很多內容需要經常的更新,如新聞、博客文章、互動遊戲等,這些變動的數據放在靜態的程序中顯然不適合,傳統的辦法是數據與程序分離,採用專業的數據庫。Web開發者在Web服務器後邊增加了一個數據庫服務器,這些經常變化的數據存進數據庫,可以隨時更新。當用戶請求頁面時,“小程序”根據用戶要求的頁面,涉及到動態數據的地方,利用SQL數據庫語言,從數據庫中讀取最新的數據,生成“完整”頁面,最後送給用戶,如股市行情曲線,就是由一個不斷刷新的小程序控制。
除了應用數據需要變化,用戶的一些狀態信息、屬性信息也需要臨時記錄(因爲每個用戶都是不同的),而Web服務器本來是不記錄這些信息的,只管答覆你的要求,“人一走茶就涼了”。後來Web技術爲了“友好”互動,需要“記住”用戶的訪問信息,建立了一些“新”的通訊機制:
Ø  Cookie:把一些用戶的參數,如帳戶名、口令等信息存放在客戶端的硬盤臨時文件中,用戶再次訪問這個網站時,參數也一同送給服務器,服務器就知道你就是上次來的那個“傢伙”了
Ø  Session:把用戶的一些參數信息存在服務器的內存中,或寫在服務器的硬盤文件中,用戶是不可見的,這樣用戶用不同電腦訪問時的貴賓待遇就同樣了,Web服務器總能記住你的“樣子”,一般情況下,CookieSession可以結合使用
Cookie在用戶端,一般採用加密方式存放就可以了;Session在服務器端,信息集中,被篡改問題將很嚴重,所以一般放在內存裏管理,儘量不存放在硬盤上。
到此,我們清楚了,Web服務器上有兩種服務用數據要保證“清白”,需要你重點保護的。一是頁面文件(.html.xml),這裏包括動態程序文件(.php.asp.jsp),一般存在Web服務器的特定目錄中,或是中間件服務器上;二是後臺的數據庫,如OracleSQL Server等,其中存放的數據的動態網頁生成時需要的,也有業務管理數據、經營數據。
還有一個問題應該提一下,就是瀏覽器給用戶電腦帶來的安全問題,因爲Web可以對本地的進程、硬盤操作,可以把***、病毒放到你的電腦上來,Web架構中使用“沙漏”技術提供安全保護,就是限制頁面中“小程序”的本地讀寫權限,但限制畢竟不能不讓其“工作”,所以多數情況下在寫入時給出提示,讓你自己選擇,大家經常看見有進程在安裝程序進入你的電腦,但絕大多數人分不清是否應該,要麼一概不許,造成很多事情做不了(很多下載與遊戲就只能看着),要麼“大膽”接受,大門敞開,聽天由命。這裏主要分析服務器端的安全,客戶端的安全再行考慮。

 

三、Web架構中的安全點分析

Web架構上可以看出,Web服務器是必經的大門,進了大門,還有很多服務器需要保護,如中間件服務器、數據庫服務器等。我們這裏不考慮網絡內部人員的***,只考慮從接入網(或互聯網)來的***,***者***的通道有下面幾個:
1、服務器系統漏洞:Web服務器畢竟的一個通用的服務器,無論是Windows,還是Linux/Unix,都不可少的帶有系統自身的漏洞,通過這些漏洞***,可以獲得服務器的高級權限,當然對服務器上運行的Web服務就可以隨意控制了。除了OS的漏洞,還有Web服務軟件的漏洞,IIS也好,Tomcat也好,同樣需要不斷地打補丁。
2Web服務應用漏洞:如果說系統級的軟件漏洞被關注的人太多了,那麼Web應用軟件的漏洞數量上就更多了,因爲Web服務開發簡單,開發的團隊參差不齊,並非都是“專業”的高手,編程不規範、安全意識不強、因爲開發時間緊張而簡化測試等,應用程序的漏洞也同樣可以讓***者來去自如。最爲常見的SQL注入,就是因爲大多應用編程過程中產生的漏洞。
3、密碼暴力破解:漏洞會招來***容易理解,但畢竟需要高超的技術水平,破解密碼卻十分有效,而且簡單易行。一般來說帳號信息容易獲得,剩下的就是猜測密碼了,由於使用複雜密碼是件麻煩而又“討厭”的事,設置容易記憶的密碼,是絕大多數用戶的選擇。大多Web服務是靠“帳號+密碼”的方式管理用戶帳戶,一旦破解密碼,尤其是遠程管理者的密碼,破壞程度難以想象,並且其***難度比通過漏洞方式要簡單的多,而且不容易被發覺。在知名的網絡經濟案例中,通過密碼***的佔了接近一半的比例。
***者進入Web系統,其動作行爲目的性是十分明確的:
Ø  讓網站癱瘓:網站癱瘓是讓服務中斷。使用DDOS***都可以讓網站癱瘓,但對Web服務內部沒有損害,而網絡***,可以刪除文件、停止進程,讓Web服務器徹底無法恢復。一般來說,這種做法是索要金錢或惡意競爭的要挾,也可能是顯示他的技術高超,拿你的網站被***作爲宣傳他的工具。
Ø  篡改網頁:修改網站的頁面顯示,是相對比較容易的,也是公衆容易知道的***效果,對於***者來說,沒有什麼“實惠”好處,主要是炫耀自己,當然對於政府等網站,形象問題是很嚴重的。
Ø  掛***:這種***對網站不產生產生直接破壞,而是對訪問網站的用戶進行***,掛***的最大“實惠”是收集殭屍網絡的“肉雞”,一個知名網站的首頁傳播***的速度是爆炸式的。掛***容易被網站管理者發覺,XSS(跨站***)是新的傾向。
Ø  篡改數據:這是最危險的***者,篡改網站數據庫,或者是動態頁面的控制程序,表面上沒有什麼變化,很不容易發覺,是最常見的經濟利益***。數據篡改的危害是難以估量的,比如:購物網站可以修改你帳號金額或交易記錄,政府審批網站可以修改行政審批結果,企業ERP可以修改銷售定單或成交價格
        有人說採用加密協議可以防止***,如https協議,這種說法是不準確的。首先Web服務是面向大衆的,不可以完全使用加密方式,在企業內部的Web服務上可以採用,甚至可以採用黑白名單,但大家都是“內部人員”,加密方式是共知的;其次,加密可以防止別人“竊聽”,但不能防止冒充;再者,“中間人劫持”同樣可以竊聽加密的通訊。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章