權威測試結果:Java不如.NET安全?
原創(chuàng)【51CTO特稿】在Java推出基于字節(jié)碼的跨平臺技術之后,Microsoft也為.NET推出了字節(jié)碼解釋模型(common language runtime)。對于兩者的區(qū)別,我個人的觀點一直是他們都可以開發(fā)出安全級別很高的應用軟件,只是兩者的開發(fā)形式、適用環(huán)境有一些區(qū)別罷了。對于安全問題,以前也經(jīng)常有客戶會問到兩者之間的區(qū)別,當時也沒有很在意,因為任何一方的安全級別都已經(jīng)足夠滿足客戶的要求了。也就是說即使有一些高低區(qū)別也沒有大的關系。
Veracode是一家應用產(chǎn)品安全測試方案提供商,他們的服務是對二進制、字節(jié)碼以及Web應用進行掃描,以發(fā)現(xiàn)安全問題。他們一直持續(xù)保留和收集著他們每次的掃描結果,并最近開始發(fā)布他們他們的掃描結果分析報告。因為他們的工作范圍里,既有.NET應用,也有Java應用,因此我們可以通過他們的數(shù)據(jù)得到一些.NET和Java之間的安全差異證據(jù)。
需要說明的是,這些數(shù)據(jù)并不是出現(xiàn)在正式發(fā)布的報告當中(這些數(shù)據(jù)將可能出現(xiàn)在下一次修訂當中。編輯注:也許是在等待廠商進行公關)。從這個報告的數(shù)據(jù)中可以看出:每MB代碼中,.NET的漏洞密度為27.2,Java則為30.0。也就是單位數(shù)量代碼中Java的安全漏洞要高于.NET。
對大多數(shù)人來說,這是一個非常接近的數(shù)字,也在抽樣誤差允許范圍之內(nèi)。可以認為.NET和Java的安全性在同一個級別范圍內(nèi)。但是如果將安全問題數(shù)據(jù)再進一步劃分為不同類型的話,則會發(fā)現(xiàn)更有趣的事情,會發(fā)現(xiàn)在不同的方面.NET和Java的安全成都差異還是比較大的。下面是報告的一部分內(nèi)容:
這是一個對.NET和Java開發(fā)者非常有用的數(shù)據(jù)。因為從報告中可以看到兩個程序語言在哪些方面更容易出現(xiàn)安全問題,比如二者的跨站腳本攻擊防范能力都不高(注:在Java Servlet 3.0規(guī)范中已經(jīng)做了改進),所以設計應用的時候就要注意防范跨站腳本攻擊問題,尤其是.NET更應該注意。在Veracode的說明中對這個問題的解釋是:之所以.NET在防范跨站腳本攻擊方面問題這么多,是因為老版本的.NET控制結構不會對輸出進行編碼,因此如果要使用.NET的話。確認一定要使用最新的控制結構。
最后需要注意的是,安全問題并不是選擇一個程序語言,或者說是在.NET和Java之間,或者是構建在其上的產(chǎn)品之間的選擇理由。一個完整的系統(tǒng),要綜合考慮應用領域環(huán)境、用戶特點要求、未來維護發(fā)展等很多方面。
【編輯推薦】