自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

李洋專欄:Android中的沙箱模型

原創(chuàng)
移動(dòng)開發(fā) Android
沙箱模型是業(yè)界保證系統(tǒng)安全的關(guān)鍵安全技術(shù),已經(jīng)在瀏覽器等領(lǐng)域得到了成功應(yīng)用。作為優(yōu)秀的開源移動(dòng)平臺操作系統(tǒng),Android也有相應(yīng)的沙箱模型,本文將對其進(jìn)行介紹。

一、沙箱模型原理簡介

現(xiàn)實(shí)中的沙箱(SandBox),是一種兒童玩具,類如KFC中一個(gè)裝滿小球的容器,兒童可以在其中隨意玩耍,起到保護(hù)兒童的作用。(也可以理解為一種安全環(huán)境。)

近年來,隨著網(wǎng)絡(luò)安全問題的日益突出,人們更多的將沙箱技術(shù)應(yīng)用于網(wǎng)上沖浪方面。從技術(shù)實(shí)現(xiàn)角度而言,就是從原有的阻止可疑程序?qū)ο到y(tǒng)訪問,轉(zhuǎn)變成將可疑程序?qū)Υ疟P、注冊表等的訪問重定向到指定文件夾下,從而消除對系統(tǒng)的危害。

舉個(gè)例子,GreenBorder為IE和FireFox構(gòu)建了一個(gè)安全的虛擬執(zhí)行環(huán)境。用戶通過瀏覽器所作的任何寫磁盤操作,都將重定向到一個(gè)特定的臨時(shí)文件夾中。這樣,即使網(wǎng)頁中包含病毒,木馬,廣告等惡意程序,被強(qiáng)行安裝后,也只是安裝到了臨時(shí)文件夾中,不會(huì)對用戶pc造成危害。

對于程序開發(fā)中的Java技術(shù)來說,沙箱也具有很重要的安全意義。沙箱無論何時(shí)加載遠(yuǎn)程網(wǎng)站上代碼并在本地執(zhí)行,安全都是至關(guān)重要的問題。點(diǎn)擊一個(gè)鏈接可以啟動(dòng)Java Web Start應(yīng)用程序。訪問一個(gè)網(wǎng)頁時(shí),其中的所有Applet也會(huì)自動(dòng)地啟動(dòng)。如果再點(diǎn)擊一個(gè)鏈接,或者訪問一個(gè)網(wǎng)頁時(shí),在用戶的機(jī)器上能夠安裝任意的代碼,那么犯罪分子就可能在此時(shí)竊聽機(jī)密信息、讀取財(cái)務(wù)數(shù)據(jù)或者接管用戶機(jī)器來發(fā)送廣告。 為了確保Java技術(shù)不會(huì)被邪惡目的所利用,SUN公司在設(shè)計(jì)Java的時(shí)候,設(shè)計(jì)了一套精密的安全模型;即安全管理器(Security Manager)將檢查有權(quán)使用的所有系統(tǒng)資源。在默認(rèn)的情況下,只允許那些無害的操作,要想允許執(zhí)行其他操作,代碼需得到數(shù)字簽名,用戶必須得到數(shù)字認(rèn)證。

特別是,在沙箱中的程序有下列限制:

  • 不能運(yùn)行任何本地可執(zhí)行程序。
  • 不能從本地計(jì)算機(jī)文件系統(tǒng)中讀取任何信息,也不能往本地計(jì)算機(jī)文件系統(tǒng)中寫入任何信息。
  • 不能查看除Java版本信息和少數(shù)幾個(gè)無害的操作系統(tǒng)詳細(xì)信息外的任何有關(guān)本地計(jì)算機(jī)的信息。特別是,在沙箱中的代碼不能查看用戶名、E-mail地址等信息。
  • 遠(yuǎn)程加載的程序不能與除下載程序所在的服務(wù)器之外的任何主機(jī)通信,這個(gè)服務(wù)器被稱為源主機(jī)(originating host)。這條規(guī)則通常稱為“遠(yuǎn)程代碼只能與家人通話”這條規(guī)則將會(huì)確保用戶不會(huì)被代碼探查到內(nèi)部網(wǎng)絡(luò)資源(在Java SE 6 中,Java Web Start 應(yīng)用程序可以與其他網(wǎng)絡(luò)連接,但必須得到用戶的同意)。

因此,近年來,沙箱技術(shù)非常盛行,如360瀏覽器等,都宣稱采用了沙箱技術(shù)來保證上網(wǎng)安全,而對于Android系統(tǒng)來說,也有意識地引入了這樣一個(gè)概念。

二、Android中的沙箱模型

在 Linux 中,一個(gè)用戶 ID 識別一個(gè)給定用戶;在 Android 上,一個(gè)用戶 ID 識別一個(gè)應(yīng)用程序。應(yīng)用程序在安裝時(shí)被分配用戶 ID,應(yīng)用程序在設(shè)備上的存續(xù)期間內(nèi),用戶 ID 保持不變。權(quán)限是關(guān)于允許或限制應(yīng)用程序(而不是用戶)訪問設(shè)備資源。

從本質(zhì)上來說,Android 通過使用沙箱的概念來實(shí)現(xiàn)應(yīng)用程序之間的分離和權(quán)限,以允許或拒絕一個(gè)應(yīng)用程序訪問設(shè)備的資源,比如說文件和目錄、網(wǎng)絡(luò)、傳感器和 API。為此,Android 使用一些 Linux 實(shí)用工具(比如說進(jìn)程級別的安全性、與應(yīng)用程序相關(guān)的用戶和組 ID,以及權(quán)限),來實(shí)現(xiàn)應(yīng)用程序被允許執(zhí)行的操作。

概念上講,沙箱可以表示為 圖 1 所示。可以清楚地看到,兩個(gè) Android 應(yīng)用程序,各自在其自己的基本沙箱或進(jìn)程上。

圖1

Android 應(yīng)用程序運(yùn)行在它們自己的 Linux 進(jìn)程上,并被分配一個(gè)惟一的用戶 ID。默認(rèn)情況下,運(yùn)行在基本沙箱進(jìn)程中的應(yīng)用程序沒有被分配權(quán)限,因而防止了此類應(yīng)用程序訪問系統(tǒng)或資源。但是 Android 應(yīng)用程序可以通過應(yīng)用程序的 manifest 文件請求權(quán)限。

通過做到以下兩點(diǎn),Android 應(yīng)用程序可以允許其他應(yīng)用程序訪問它們的資源:

1)        聲明適當(dāng)?shù)?manifest 權(quán)限

2)        與其他受信任的應(yīng)用程序運(yùn)行在同一進(jìn)程中,從而共享對其數(shù)據(jù)和代碼的訪問(如圖 2所示)。

圖2

不同的應(yīng)用程序可以運(yùn)行在相同的進(jìn)程中。對于此方法,首先必須使用相同的私鑰簽署這些應(yīng)用程序,然后必須使用 manifest 文件給它們分配相同的 Linux 用戶 ID,這可以通過用相同的值/名定義 manifest 屬性 android:sharedUserId 來做到。具體的私鑰簽署和權(quán)限相關(guān)的內(nèi)容,請參看Android安全專欄中的相關(guān)文章,這里不再贅述。

責(zé)任編輯:佚名 來源: 51CTO.com
相關(guān)推薦

2011-08-01 13:35:08

Android安全框架權(quán)限

2011-11-03 09:24:57

李洋簽名

2011-09-15 08:58:41

Android短信丟失技術(shù)原因

2011-08-12 09:06:48

Android系統(tǒng)應(yīng)用程序

2011-08-29 13:52:15

李洋Android應(yīng)用

2011-08-22 08:53:17

Android啟動(dòng)過程李洋

2011-09-06 13:56:43

李洋iOS安全機(jī)制

2012-07-23 13:22:42

Intent Filt安全Android

2010-09-06 09:31:56

開源工具運(yùn)維自動(dòng)化

2021-06-24 14:35:16

鴻蒙HarmonyOS應(yīng)用

2012-09-27 09:25:50

2011-09-22 09:51:41

2012-01-05 15:52:16

2012-07-16 10:21:48

Android進(jìn)程線程

2012-10-31 11:21:30

網(wǎng)站統(tǒng)計(jì)數(shù)據(jù)收集開發(fā)

2025-02-08 09:30:00

2011-04-07 14:07:56

活動(dòng)目錄

2012-11-30 10:31:44

IBMdW

2024-02-29 11:56:10

AI模型

2024-02-26 08:25:00

模型訓(xùn)練
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號