天天看點

Java核心技術卷I基礎知識1.2.5 安全性

<b>1.2.5 安全性</b>

java适用于網絡/分布式環境。為了達到這個目标,在安全方面投入了很大精力。使用java可以建構防病

毒、防篡改的系統。

從一開始,java就設計成能夠防範各種攻擊,其中包括:

運作時堆棧溢出。如蠕蟲和病毒常用的攻擊手段。

破壞自己的程序空間之外的記憶體。

未經授權讀寫檔案。

原先,java對下載下傳代碼的态度是“盡管來吧!”。不可信代碼在一個沙箱環境中執行,在這裡它不會影響主

系統。使用者可以确信不會發生不好的事情,因為java代碼不論來自哪裡,都不能脫離沙箱。

不過,java的安全模型很複雜。java開發包(java development kit,jdk)的第一版釋出之後不久,普林

斯頓大學的一些安全專家就發現一些小bug會允許不可信的代碼攻擊主系統。

最初,安全bug可以快速修複。遺憾的是,經過一段時間之後,黑客已經很擅長找出安全體系結構實作中的

小漏洞。sun以及之後的oracle為修複bug度過了一段很是艱難的日子。

遭遇多次高調攻擊之後,浏覽器開發商和oracle都越來越謹慎。java浏覽器插件不再信任遠端代碼,除非

代碼有數字簽名而且使用者同意執行這個代碼。

      注釋:現在看來,盡管java安全模型沒有原先預想的那麼成功,但java在那個時代确實相當超前。

微軟提供了一種與之競争的代碼傳輸機制,其安全性完全依賴于數字簽名。顯然這是不夠的,因為微軟自

身産品的任何使用者都可以證明,知名開發商的程式确實會崩潰并對系統産生危害。