為了保證Java技術不會被用於邪惡的目的,SUN公司在設計Java時設計了壹套精密的安全模型。也就是說,安全管理器將檢查所有有權使用的系統資源。默認情況下,只允許那些無害的操作。為了允許其他操作,必須對代碼進行數字簽名,並且必須對用戶進行數字認證。
遠程代碼在所有平臺上都可以做什麽?它可以顯示圖像,播放音樂,獲取用戶的鍵盤輸入和鼠標點擊,並將用戶的輸入發送回加載代碼的主機。這些功能足以顯示信息和圖片,或者獲取用戶為訂單輸入的信息。這種受限的執行環境被稱為沙箱。在沙箱中運行的代碼不能修改或查看用戶系統。
特別是,沙盒中的過程有以下限制:
無法運行任何本地可執行程序。
您不能從本地計算機文件系統讀取任何信息,也不能向本地計算機文件系統寫入任何信息。
除了Java版本信息和壹些無害的操作系統詳細信息之外,您無法查看有關本地計算機的任何信息。特別是,沙箱中的代碼無法查看用戶名和電子郵件地址等信息。
遠程加載的程序不能與除下載程序所在的服務器之外的任何主機通信。該服務器稱為原始主機。這個規則通常被稱為“遠程代碼只能與家人通話”,它將確保用戶不會被代碼探查到內部網絡資源(在Java SE 6中,Java Web Start應用程序可以連接其他網絡,但必須獲得用戶的同意)。
所有彈出窗口都會有壹條警告消息。該消息起到安全作用,確保用戶不會對本地應用程序出錯。令人擔憂的是,壹個受信任的用戶可以訪問壹個網頁,並被誘騙運行遠程代碼,然後輸入密碼和信用卡號,這些信息將被發送回服務器。在早期的JDK版本中,有壹條消息會很嚇人:“不可信的Java Applet窗口”。後來的JDK版本通過壹些“未認證的Java Applet窗口”緩和了警告信息的語氣。接著是“警告:Java小程序窗口”。現在只是“Java小程序窗口”或“Java應用程序窗口”。