蘋果的沙盒機制想必大家都聽過,并且都會稱贊這是iOS做的比安卓系統(tǒng)好的一個重要因素捶枢,沙盒機制讓iOS更為安全赴魁。
沙盒機制歷史上被稱作安全帶规惰,是一種基于FreeBSD系統(tǒng)(是一種類UNIX操作系統(tǒng)吝镣,是由經(jīng)過BSD堤器、386BSD和4.4BSD發(fā)展而來的Unix的一個重要分支)TrustedBSD框架的強制訪問控制(MAC)機制,他的主要推動者是羅伯特沃森末贾。這里我只是簡單介紹一下闸溃,詳細的信息以及介紹可以看這里TrustedBSD MAC框架介紹(http://shouce.jb51.net/freebsd-arch-handbook/mac.html),這份文檔寫得十分詳盡拱撵,感興趣的讀者可以看看辉川。
言歸正題,沙盒機制采用一種類似于Lisp的配置語言來描述那些資源系統(tǒng)可以訪問拴测,哪些禁止訪問乓旗。這些資源包括文件、系統(tǒng)服務(wù)集索、網(wǎng)絡(luò)連接屿愚、內(nèi)存資源等。MAC機制不同于傳統(tǒng)的訪問控制機制(比如自主訪問控制DAC)务荆,他不允許主體(比如用戶進程)操作對象(文件妆距、套接字等)。DAC最常見的形式就是Unix系統(tǒng)上的用戶函匕、組和其它權(quán)限娱据,所有這些都可以被授予讀、寫或執(zhí)行的權(quán)限盅惜。在DAC系統(tǒng)中吸耿,用戶如果擁有了一個對象的所有權(quán),也就擁有了該對象的修改權(quán)限酷窥。例如咽安,你有一個文件,你可以將其設(shè)置為全局可讀或可寫蓬推,這顯然是破壞了訪問機制妆棒。
MAC是一個廣義的術(shù)語,在沙盒中意味著應(yīng)用程序被關(guān)進了一個虛擬的容器沸伏。該容器遵循一系列的特定規(guī)則糕珊,即哪些系統(tǒng)資源可以被訪問,比如網(wǎng)絡(luò)資源毅糟、文件讀寫红选、進程克隆等。在OS X中你可以部分控制應(yīng)用程序的沙盒功能姆另,但是在iOS中喇肋,所有的第三方應(yīng)用都要遵循唯一的限制策略坟乾。
在文件訪問方面,一般只能訪問應(yīng)用程序的包目錄蝶防。應(yīng)用程序可以讀寫存儲在該位置的文件甚侣。不過這一基本規(guī)則存在少許的例外。例如间学,在某些iOS版本中殷费,圖片一般存儲在目錄/private/var/mobile/Media/Photos/ 中。盡管它在應(yīng)用程序的包目錄之外低葫,但第三方應(yīng)用還是可以直接訪問详羡,這樣應(yīng)用程序就無需獲得用戶許可就能訪問系統(tǒng)相冊,在之前的iOS版本中嘿悬,如果想要阻止應(yīng)用程序濫用權(quán)力殷绍,就只能將希望寄托在蘋果審核的身上。但是在最新的iOS10系統(tǒng)里鹊漠,所有訪問操作都必須經(jīng)過授權(quán),而且在應(yīng)用開發(fā)時必須將要使用到的權(quán)限(如相冊茶行、相機躯概、麥克風)寫入plist文件中,不然應(yīng)用程序在使用到這些API時會崩潰畔师,而且審核應(yīng)用時一定會被拒絕娶靡。
安卓的訪問控制機制與MAC不同。安卓實現(xiàn)了一個更加傳統(tǒng)的DAC模型看锉,應(yīng)用程序都有自己的用戶ID和屬于該ID的文件夾姿锭,其權(quán)限管理嚴格按照傳統(tǒng)的Unix文件權(quán)限管理運作。雖然兩種機制工作起來都沒有問題伯铣,但是MAC的擴展性總體來說還是要更強一些呻此。例如,除了應(yīng)用目錄隔離腔寡,MAC機制還可以限制網(wǎng)絡(luò)訪問或守護系統(tǒng)進程的操作焚鲜。
術(shù)語解析(詳情請點文中鏈接查看):
FreeBSD: 以一個內(nèi)核安全擴展性框架(TrustedBSD MAC 框架)的方式,為若干強制訪問控制策略(也稱“集權(quán)式訪問控制策略”) 提供試驗性支持放前。MAC 框架是一個插入式的訪問控制框架忿磅,允許新的安全策略更方便地融入內(nèi)核:安全策略可以靜態(tài)鏈入內(nèi)核,也可以 在引導(dǎo)時加載,甚至在運行時動態(tài)加載。該框架所提供的標準化接口,使得運行在其上的安全策略模塊能對系統(tǒng)對象的安全屬性進行諸如標記等一系列操作凭语。 MAC 框架的存在葱她,簡化了這些操作在策略模塊中的實現(xiàn),從而顯著降低了新安全策略模塊的開發(fā)難度似扔。
TrustedBSD:MAC 框架提供的機制,允許在其上運行的內(nèi)核模塊在內(nèi)核編譯或者運行時吨些,對內(nèi)核的訪問控制模型進行擴展搓谆。 新的系統(tǒng)安全策略作為一個內(nèi)核模塊實現(xiàn),并被鏈接到內(nèi)核中;如果系統(tǒng)中同時存在多個安全策略模塊锤灿,則它們的決策結(jié)果將以某種確定的方式組合挽拔。 為了給簡化新安全策略的開發(fā),MAC 向上提供了大量用于訪問控制的基礎(chǔ)設(shè)施但校,特別是對臨時的或者持久的螃诅、策略無關(guān)的對象安全標記的支持。