編輯:Android開發教程
沙箱模型是業界保證系統安全的關鍵安全技術,已經在浏覽器等領域得到了成功應用。作為優秀的開源移動平台操作系統,Android也有相應的沙箱模型,本文將對其進行介紹。
一、沙箱模型原理簡介
現實中的沙箱(SandBox),是一種兒童玩具,類如KFC中一個裝滿小球的容器,兒童可以在其中隨意玩耍,起到保護兒童的作用。(也可以理解為一種安全環境。)
近年來,隨著網絡安全問題的日益突出,人們更多的將沙箱技術應用於網上沖浪方面。從技術實現角度而言,就是從原有的阻止可疑程序對系統訪問,轉變成將可疑程序對磁盤、注冊表等的訪問重定向到指定文件夾下,從而消除對系統的危害。
舉個例子,GreenBorder為IE和FireFox構建了一個安全的虛擬執行環境。用戶通過浏覽器所作的任何寫磁盤操作,都將重定向到一個特定的臨時文件夾中。這樣,即使網頁中包含病毒,木馬,廣告等惡意程序,被強行安裝後,也只是安裝到了臨時文件夾中,不會對用戶pc造成危害。
對於程序開發中的Java技術來說,沙箱也具有很重要的安全意義。沙箱無論何時加載遠程網站上代碼並在本地執行,安全都是至關重要的問題。點擊一個鏈接可以啟動Java Web Start應用程序。訪問一個網頁時,其中的所有Applet也會自動地啟動。如果再點擊一個鏈接,或者訪問一個網頁時,在用戶的機器上能夠安裝任意的代碼,那麼犯罪分子就可能在此時竊聽機密信息、讀取財務數據或者接管用戶機器來發送廣告。 為了確保Java技術不會被邪惡目的所利用,SUN公司在設計Java的時候,設計了一套精密的安全模型;即安全管理器(Security Manager)將檢查有權使用的所有系統資源。在默認的情況下,只允許那些無害的操作,要想允許執行其他操作,代碼需得到數字簽名,用戶必須得到數字認證。
特別是,在沙箱中的程序有下列限制:
不能運行任何本地可執行程序。
不能從本地計算機文件系統中讀取任何信息,也不能往本地計算機文件系統中寫入任何信息。
不能查看除Java版本信息和少數幾個無害的操作系統詳細信息外的任何有關本地計算機的信息。特別是,在沙箱中的代碼不能查看用戶名、E-mail地址等信息。
遠程加載的程序不能與除下載程序所在的服務器之外的任何主機通信,這個服務器被稱為源主機(originating host)。這條規則通常稱為“遠程代碼只能與家人通話”這條規則將會確保用戶不會被代碼探查到內部網絡資源(在Java SE 6 中,Java Web Start 應用程序可以與其他網絡連接,但必須得到用戶的同意)。
因此,近年來,沙箱技術非常盛行,如360浏覽器等,都宣稱采用了沙箱技術來保證上網安全,而對於Android系統來說,也有意識地引入了這樣一個概念。
二、Android中的沙箱模型
在 Linux 中,一個用戶 ID 識別一個給定用戶;在 Android 上,一個用戶 ID 識別一個應用程序。應用程序在安裝時被分配用戶 ID,應用程序在設備上的存續期間內,用戶 ID 保持不變。權限是關於允許或限制應用程序(而不是用戶)訪問設備資源。
從本質上來說,Android 通過使用沙箱的概念來實現應用程序之間的分離和權限,以允許或拒絕一個應用程序訪問設備的資源,比如說文件和目錄、網絡、傳感器和 API。為此,Android 使用一些 Linux 實用工具(比如說進程級別的安全性、與應用程序相關的用戶和組 ID,以及權限),來實現應用程序被允許執行的操作。
概念上講,沙箱可以表示為 圖 1 所示。可以清楚地看到,兩個 Android 應用程序,各自在其自己的基本沙箱或進程上。
圖1
Android手機都會有返回鍵,不管是實體鍵,還是虛擬鍵。Android用戶主要也都是通過這個返回鍵操控頁面返回方式的,不比IOS逼格甚高的只保留一個操作鍵。這種方式是最
技術是永無止境的,如果真的愛技術,那就勇敢的堅持下去。我很喜歡這句話,當我在遇到問題的時候、當我覺得代碼枯燥的時候,我就會問自己,到底是不是真的熱愛技術,這個時候,我心裡
在例子Android簡明開發教程十七:Dialog 顯示圖像 中我們留了一個例子DrawMap()沒有實現,這個例子顯示在線地圖,目前大部分地圖服務器都是將地圖以圖片存儲
第一步:首先在AndroidManifest.xml中加入下面代碼:上面targetPackage指定的包要和應用的package相同。就是這個測試類所在的包 名;第二