天天看點

《Java學習指南》—— 1.6 應用和使用者級安全性

本節書摘來異步社群《java學習指南》一書中的第1章,第1.6節,作者:【美】patrick niemeyer , daniel leuck,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

要有足夠的能力來完成一些有用的事情,這與擁有全部能力來完成可能的任何事情之間存在着細微的界限。java為一個安全環境提供了基礎,在此不可信代碼可以得到“檢疫”、管理和安全地執行。不過,除非你滿足于将該代碼永遠置于一個小小的黑箱中,并且隻是獨立地運作而不與外界打任何交道,否則就必須對其授權,允許它至少能夠通路一些系統資源,這樣才能真正有用。每一種通路都既有風險,又有收益。例如,在web浏覽器環境中,授權一個不可信(未知)applet通路你的視窗系統有一個好處,即它可以顯示資訊,并允許你以一種有用的方式進行互動。與此連帶産生的風險則是該applet可能顯示一些無意義的東西,甚至是讨厭的或者攻擊性的内容。

在一種極端的情況下,運作應用的簡單做法是使應用得到一個資源,即計算時間,對此它可能會很好地加以利用,也可能會輕易地将其浪費。不可信的應用會浪費你的時間,甚至會嘗試一種拒絕服務攻擊(denial of service),這種情況很難避免。而在另一種極端情況下,一個功能強大而且可信的應用應當能夠通路各種系統資源(例如,檔案系統、程序建立、網絡接口等);但惡意應用若擁有這些資源則會帶來嚴重的破壞。這說明,安全性問題相當重要(有時還相當複雜),必須得到解決。

在某些情況下,隻是要求使用者對請求做出“同意”與否的回答,這是一種可以接受的做法。java語言提供了工具來實施你想要的任何安全政策。然而,這些政策将會是什麼樣,最終取決于相關代碼的身份認證和完整性有多麼敏感。這是數字簽名的用武之地。

數字簽名以及證書等技術都是用以驗證資料确實來自于它所聲稱的來源,而且在發送過程中未經篡改。如果boofa銀行對其支票簿applet做了簽名,你可以驗證此簽名,進而确定該applet确實來自于該銀行而非假冒,而且也未被修改過。是以,你可以通知浏覽器信任有boofa銀行簽名的applet。

本文僅用于學習和交流目的,不代表異步社群觀點。非商業轉載請注明作譯者、出處,并保留本文的原始連結。