根據一份2002年美國FBI舊金山總部與電腦安全協會針對二百多家企業進行的一份調查報告顯示,其中高達九成的企業認為,應用系統曾遭到駭客的侵入與破壞,而其中更有八成的企業表示,由於應用程式缺乏嚴謹的安全防護致使安全漏洞大開,直接衝擊並造成實質的財務損失,估計損失大約將近4億4仟5百萬美元,也就是說,平均每家企業因應用程式安全的失防問題所造成的損失就超過兩百萬美元(如圖一所示),這也凸顯出如何開發一套具有安全考量的應用程式,已是未來的程式開發的首要任務。
一般而言,網頁應用程式都放置於伺服器上,供網際網路整個大環境上的使用者做瀏覽與存取之用,而此種類型的應用程式通常會涉及一些較敏感的客戶資料,如信用卡卡號、財務資料、病患的醫療記錄等,同時也可能包含一些公司行號的重要資訊,如高階主管的決策文件、員工隱私資料、智慧財產權資料、專利權或是商業機密資料等。使用者透過網際網路瀏覽或存取網頁應用程式時,通常會有兩種情況發生,一種是合法的使用者,一種是蓄意破壞的駭客,而這類型的駭客只需些許時間就能恣意妄為地破壞網站、或變更產品價格表、或改變網頁的內容或外觀,嚴重的話,甚至癱瘓整個網站,讓企業的商業交易完全停擺、運作終止。

資訊安全加已防護  但仍難遏止駭客攻擊

通常企業較著重系統層與網路層的資訊安全防護措施,於使用者桌上型電腦內會安裝防毒軟體以防止電腦遭人植入後門或木馬程式,於網路層則會架設防火牆與入侵偵測系統做為防範,以保障並同時降低企業內部電腦設備被入侵的機率。然而,即使企業的資訊安全防護措施已做到滴水不漏,業界發生多起重大的資安事件仍時有所聞。據Gartner Group統計指出,將近百分之七十的駭客攻擊事件是發生在應用系統層(如圖二),而非作業系統層與網路層,其主要原因可歸類為以下幾點:

因此,無論是企業內部或外部的網頁應用程式,主要均以提供使用者瀏覽網站資訊、或是存取後端資料庫內的各項資訊、或是進行簡單的商業交易行為,例如下訂單、修正客戶資料、瀏覽所購買的商品等…,這類的行為通常不會威脅到企業應用程式的安全性。但若其中有一名使用者意圖不軌,蓄意攻擊應用程式,採取透過應用程式漏洞的方法入侵,竊取資料或毀損資料庫內的所有資料,讓企業的應用系統陷入停止運作的困境,同時也造成企業的財務損失,而這最終的結果都不是我們所樂見的。

  • 網站不斷的迅速成長,有越來越多的應用程式原始碼放置在網路上,無形中提高被攻擊的危險性。
  • 應用程式無法做到百分之百的安全。
  • 駭客攻擊已不再是專業領域,透過網際網路的搜尋功能,即使非專業人員也能從中學習常見的攻擊手法。
  • 透過WWW(全球資訊網),雖增加資訊分享的便利性,但駭客也同時透過標準80埠的管道,達到入侵應用系統的目的。

駭客攻擊應用程式的慣用手法

緩衝區溢位(buffer overflow)攻擊技術
駭客嘗試覆蓋伺服器的記憶體,用以控制應用程式執行流程的記憶體,使應用程式執行駭客在輸入畫面時所傳遞的內嵌程式碼。
跨網站指令碼(cross-site scripting)攻擊技術
一種眾所周知的攻擊模式,駭客透過網站應用程式的文字輸入欄位,嵌入一些可執行的指令碼,藉以劫持使用者的cookie或帳號密碼。
資料庫查詢注入攻擊(SQL Injection,或稱資料隱碼攻擊)
另一種駭客常用的攻擊手法,類似於跨網站指令碼攻擊,兩者都是透過網站應用程式的文字輸入欄位,暗中嵌入一些可執行的指令碼,達到攻擊的目的。資料庫查詢注入攻擊不但攻擊應用程式外,更嚴重的是它可以在多層次的網頁應用程式攻擊後端資料庫,甚至造成資料庫的毀損,癱瘓整個網站的運作。

SecurityChecker建構安全的網路應用程式

在程式開發階段即建構一安全的網路應用程式,是一項具高難度的技術挑戰,其中包含已知或未知的入侵應用程式的途徑或方法就已高達近上千種,即使是一個小型的網路應用程式,可能也有超過上百個不同的安全漏洞。因此,如何防止駭客不易入侵應用程式,減少安全漏洞大開的機率,確保其具有高度的安全性,是程式開發團隊努力的唯一目標。
而為防止應用程式遭駭客的蓄意攻擊與破壞,程式開發人員需要一套有效的工具協助,在程式開發過程中做好防禦措施,Compuware的DevPartner SecurityChecker正是一套針對ASP.NET網頁應用程式所設計的安全漏洞分析工具,只要是以VB.NET或C#.NET程式語言所開發的ASP.NET應用程式,程式開發人員都能利用DevPartner SecurityChecker工具找出程式碼中潛在的安全漏洞問題,並加以防堵,於應用程式部署之前做好有效的防禦措施,降低應用程式遭駭客入侵的機率。程式開發人員可透過DevPartner SecurityChecker的執行期、編譯期和完整性分析進行組合,輕鬆完成應用程式安全性檢測過程的自動化。

問題的發現、分析、解決和修正

圖三:DevPartner DevPartner的SecurityChecker,安全漏洞分析畫面,說明每個漏洞的建議與修正方法。

透過下列三個不同的操作階段,來教導程式開發人員“發現程式漏洞→分析問題→解決問題→到問題的修正”,以確保所開發出的應用程式之品質:
發現階段:
程式開發人員可以在SecurityChecker中以手動方式,選擇準備作檢測的應用程式範圍;或以自動方式,指示SecurityChecker準備進行整個應用程式的分析與掃瞄。
分析階段:
可顯示應用程式漏洞的高階層圖表與報告、列出各種已知問題的詳細列表、以及已知安全漏洞的說明。
建議階段:
讓程式開發人員獲得關於修正程式漏洞的詳細資訊,甚至主動提供連結至相關的安全性網站以獲取更詳細的資訊,讓安全漏洞的問題能火速得到解決。