根據 CVE (Common Vulnerabilities and Exposures) 的分析報告,目前網路上最嚴重的安全性問題的前五名是:1. Cross Site Scripting (21.5%), 2. SQL Injection (14%), 3. PHP includes (9.5%), 4. Buffer overflows (7.9%), 5. DOT (4.4%)...
根據 CVE (Common Vulnerabilities and Exposures) 的分析報告,目前網路上最嚴重的安全性問題的前五名是:
- Cross Site Scripting (21.5%)
- SQL Injection (14%)
- PHP includes (9.5%)
- Buffer overflows (7.9%)
- DOT (4.4%)
其中 Cross Site Scripting (XSS,跨站程序攻擊) 是近期興起的一種網路攻擊方式;它從去年開始突然活躍了起來。它的原理是透過內嵌於圖形(也可能是其它控制項)標簽的一段 JavaScript 程式碼,當你在網頁上瀏覽有問題的圖片的時候,它就趁機把網站給你的認證 Cookie 偷走並複製一份,讓盜取者有機會假冒你的身份在另一部遠端機器上執行你可以從事的工作,包括變更你的密碼,讀取你的信件等等。
由於 Cookie 總會過期,所以盜取者不一定偷得到他想要的東西。不過萬一他得手了,而且偷到的是系統管理者的 Cookie,那就賓果了!因為盜取者將有機會進入系統把他自己的帳號提升為管理員,當然整個系統就變成他的了。
這種攻擊方式並不是今天才發現的,一些比較有規模、有風險意識的網站早就已經有其因應之道。以本站(以及任何以 Community Sever 所架設的網站)為例,你並無法藉著在 img 標簽內輸入 JavaScirpt 而啟動它,因為根本不會有作用,也不會被執行。但是其它網站就不一定了。
面對這種攻擊方式,使用者根本無法招架。你怎麼會知道在你瀏覽到某個圖片的時候,自己的資料正偷偷的被人家複製呢?這種駭客方式只有靠網站的設計者和管理員來防止。
至於使用者的自保方式,就是絕對不要「明知山有虎,偏向虎山行」。我們應該都知道外國有許多專門提供盜版或色情圖片的討論群組,你如果上了這種網站,真的心裡不會毛毛的嗎?我有一些朋友,每次因為 IE 又被綁架或下毒而來向我求助時,我就知道他又上了什麼網站了。既然那麼不安全,你還是別去吧。
如果你有非去不可的理由,那我勸你絕對不要在那邊註冊,尤其是需要付費的註冊。
這麼講是有點嚇人,因為會使用 XSS 攻擊方式的駭客,主要還是希望攔截到管理者的權限;如果你本來就沒什麼權限,問題可能不會太嚴重。但不管如何,還是小心一點比較好。
MSDN 上面有一篇介紹 ASP.NET 程式設計師如何避免 XSS 攻擊的文章:How To: Prevent Cross-Site Scripting in ASP.NET,可以參考一下。我如果有時間,再把這一篇文章的重點為大家翻譯並摘錄。
除了 XSS 之外,高佔排行第二名的常見攻擊方式竟然是 SQL Injection。SQL Injection 攻擊方式早就應該是大家耳熟能詳的駭客手法了吧?但是如同 Paul Litwin 在他的部落格所講的,即使他在好幾年前就已經在 MSDN 上面著文介紹過 SQL Injection 的攻擊手法了,到今天為止,他還是不時可以遇到從未聽說過 SQL Injection 的人。
所謂的 SQL Injection,是指駭客藉著在輸入文字(尤其是輸入登入帳號)時,將一串 SQL 指令帶進去。如果程式設計者沒有想到這一點,那麼當程式把這串文字當作 SQL 指令的參數而予被執行的時候,駭客就有可能根本無需輸入密碼,也可以登入系統。
所以,只要他知道管理員的帳號,他就可以隨心所欲的登入系統,並取得最大的權限了。
透過 SQL Injection 所能達成的「功能」其實不只如此,在最嚴重的狀況下,駭客甚至可以從遠端取得伺服器中系統管理員的權限,而不是網站的權限而已。
但是要防止 SQL Injection,並沒有你想像中那麼複雜。最簡單的方法,就是把你的 SQL 指令透過 Stored Procedure 來執行,那麼一般的惡意參數就失效了。至少,可以防止大部份的常見手法。
像這種常見的駭客手法的防範其實都不太難,問題在於大家都不知道有這種手法,當然也就不知道要去防範了。大部份的駭客所使用的駭客手法,其實都是老套。但為什麼老手法還是讓駭客屢屢得逞呢?我想這是程式設計師需要深思的。
同樣的,MSDN 上面有一篇介紹 ASP.NET 程式設計師如何避免 SQL Injection:How To: Protect From SQL Injection in ASP.NET,請參考。
其實 CVE 的統計數字都是從他們所公開的資訊來源所接收並統計得來,但是還有一些駭客手法是不為人知的,或是難以統計的。例如網路釣魚 (Phishing) 的手法,就不在 CVE 的列表裡面。但不在列表裡面,並不代表這個問題不嚴重。
曾經有一段時間,我幾乎每天都接到兩三封來自 PayPal 的信件,表示我的帳號被人家盜用,或是密碼過期等等,希望我上去重新更改密碼之類的。我覺得非常奇怪,因為我雖然有 PayPal 帳號,但我從申請過後,從來沒有使用過它,怎麼可能有機會被別人盜用!此外,幸好我的讀信工具是 Office Outlook,當我指到信件中要我前往更改密碼的連結時,雖然畫面上的網址似乎沒有問題,但連結的提示字樣 (Tooltip) 卻很明確的告訴我這個連結根本是指向另一個位址!
如果我當時心裡沒有懷疑而連上那些信件給我的網址時,我的帳號和密碼資料已經被拷貝一份了。
過了幾個月後,我才在網路上開始看到有所謂網路釣魚這種名詞。
但是事情還沒有結束。又過了不久,我又開始收到花旗銀行或 BOA 寄來給我的類似信件。當然這個一看就知道是詐騙信件,因為我根本沒有在外國的銀行開設帳戶。不過令我奇怪的是,這些連結看起來似乎並沒有問題!假設 (純舉例) 畫面上的連結是 http://www.citybank.com,提示文字也是 http://www.ciitybank.com。這下子總沒有問題了吧!
但是請再好好的仔細看清楚,後面那個連結裡面的 citybank 多了一個 i !當你以為你連上 citybank 的時候,你實際上是連到了 ciitybank。後面是一個假造的網址,但是它的內容卻和花旗銀行的登入網頁一模一樣。
如果你上當了,真的連到那個詐騙網頁的話,那麼當你打進帳號密碼之後,你將會發現他會告訴你帳號密碼錯誤,請你按下一個按鈕後再打一次。或者你在打進帳號密碼之後,畫面似乎重整了一次,剛才打的字全部不見了,也沒有錯誤訊息,所以你只好重打一遍。
原來在你第一次打進帳號密碼並按下登入按鈕時,它已經偷偷的把你引導到真的花旗銀行的網站,所以你必須重新打一次,才能真的登入。但是在你第一次打進帳號密碼時,詐騙集團已經把它記錄下來了。
像這種駭客手法,說真的,除非使用者自己平時多多注意,否則真不曉得如何防範,因為這已經不是程式漏洞的問題了。所以使用者自己要好好的記住自己往來銀行的網址,假設是 abc 銀行,那麼它網址到底是 abc.com 還是 abc.org,還是 abcbank.com,還是 bankofabc.com... 自己要搞得清楚。同時,如果你收到銀行寄來的電子郵件,那麼你最好特別注意,盡量不要透過信裡面的連結連到它的網站,而是透過一開始申請的網址連上去,如此才有保障。