新聞中心
1. 外部數(shù)據(jù)安全

外部存儲(chǔ)通常是指將數(shù)據(jù)存入到設(shè)備的SD卡上。
外部存儲(chǔ)是一種不安全的數(shù)據(jù)存儲(chǔ)機(jī)制,因?yàn)榇鎯?chǔ)到SD卡上的文件默認(rèn)是提供給others讀文件的權(quán)限的,設(shè)備上安裝的其他App只要在其AndroidMenifest.xml上聲明如下的語(yǔ)句。
那么該App就具有了對(duì)于SD卡的完全的讀寫(xiě)權(quán)限,即是說(shuō)一個(gè)App放在SD卡上的任何數(shù)據(jù)都可以被其他的App進(jìn)行讀/寫(xiě)操作,所以將重要數(shù)據(jù)存儲(chǔ)在SD卡上具有相當(dāng)大的安全隱患。
2. 內(nèi)部數(shù)據(jù)安全
內(nèi)部數(shù)據(jù)存儲(chǔ)主要分為兩種方式:SharedPreference存儲(chǔ)和File存儲(chǔ)。內(nèi)部數(shù)據(jù)存儲(chǔ)的安全問(wèn)題主要需要注意的是創(chuàng)建的模式以及向文件中寫(xiě)入的內(nèi)容。
SharedPreference 存儲(chǔ)是一種輕量級(jí)的數(shù)據(jù)存儲(chǔ)方式,它的本質(zhì)是基于 XML 文件存儲(chǔ)Key-Value鍵值對(duì)數(shù)據(jù),通常用來(lái)存儲(chǔ)一些簡(jiǎn)單的配置信息。
File存儲(chǔ)即常說(shuō)的文件(I/O)存儲(chǔ)方法,常用于存儲(chǔ)大量的數(shù)據(jù)。
內(nèi)部數(shù)據(jù)存儲(chǔ)通常較為安全,因?yàn)樗鼈兛梢允艿紸ndroid系統(tǒng)的安全機(jī)制的保護(hù)。
Android的安全機(jī)制本質(zhì)上就是Linux的安全機(jī)制,系統(tǒng)會(huì)為在Android系統(tǒng)上運(yùn)行的每一個(gè)App創(chuàng)建一個(gè)進(jìn)程,并為該進(jìn)程分配一個(gè)UID。Android系統(tǒng)將會(huì)為每一個(gè)App創(chuàng)建一個(gè)特定的目錄/data/data/app_package_name,這個(gè)目錄的權(quán)限只與UID相關(guān),且只有UID關(guān)聯(lián)的用戶(hù)才有該目錄相關(guān)的權(quán)限。
因此,在對(duì)應(yīng)目錄下生成的SharedPreference文件與File文件如果以正確的方式去創(chuàng)建將會(huì)受到Android系統(tǒng)權(quán)限機(jī)制的保護(hù)。
這個(gè)正確的創(chuàng)建方式是指文件創(chuàng)建的模式,SharedPreference與文件的創(chuàng)建模式主要有以下3種。
MODE_PRIVATE:默認(rèn)的創(chuàng)建模式,該進(jìn)程的 UID 對(duì)應(yīng)的用戶(hù)將會(huì)對(duì)該文件擁有完全的控制的權(quán)限,而其他UID的用戶(hù)將沒(méi)有權(quán)限去讀/寫(xiě)文件。
MODE_WORLD_WRITABLE:該權(quán)限將允許設(shè)備上所有的App對(duì)于該文件擁有寫(xiě)的權(quán)限。
MODE_WORLD_READABLE:該權(quán)限將允許設(shè)備上所有的App對(duì)于該文件擁有讀的權(quán)限。
為了確保內(nèi)部數(shù)據(jù)的安全,有如下建議。
(1)創(chuàng)建文件時(shí)的權(quán)限控制
如果在創(chuàng)建文件的時(shí)候沒(méi)有注意控制權(quán)限,那么該文件的內(nèi)容將會(huì)被其他的應(yīng)用程序所讀取,這樣就造成了用戶(hù)相關(guān)信息的泄露,SharedPreference中存儲(chǔ)的往往是一些免登token、session id等和用戶(hù)身份息息相關(guān)的重要信息,因此,在創(chuàng)建的時(shí)候一定要注意選取好創(chuàng)建的模式;免登token也一定要具有時(shí)效性,否則與存儲(chǔ)了明文的用戶(hù)名和密碼無(wú)異。
(2)SharedPreference中不要存入明文密碼等重要信息
由于有Root的存在,那么Root過(guò)后的手機(jī)就打破了Linux提供的沙箱機(jī)制,那么無(wú)論以何種方式去創(chuàng)建SharedPreference都已經(jīng)不再安全了,如果存儲(chǔ)的是用戶(hù)明文的密碼,那么用戶(hù)的密碼將會(huì)泄露,因此,絕對(duì)不要向SharedPreference中寫(xiě)入任何無(wú)時(shí)效性的重要的數(shù)據(jù)。
3. 通信數(shù)據(jù)安全
這里的通信數(shù)據(jù)安全是指軟件與軟件、軟件與網(wǎng)絡(luò)服務(wù)器之間進(jìn)行數(shù)據(jù)通信時(shí),所引發(fā)的安全問(wèn)題。
軟件與軟件的通信,Android有4大組件:Activity、Content Provider、Service、Broadcast Receiver。
這些如果在Androidmanifest.xml配置不當(dāng),會(huì)被其他應(yīng)用調(diào)用,引起風(fēng)險(xiǎn)。Android應(yīng)用內(nèi)部的Activity、Service、Broadcast Receiver等,它們通過(guò)Intent通信,組件間需要通信就需要在Androidmanifest.xml文件中暴露組件。
Intent的兩種基本用法:一種是顯式的Intent,即在構(gòu)造Intent對(duì)象時(shí)就指定接收者;另一種是隱式的Intent,即Intent的發(fā)送者在構(gòu)造Intent對(duì)象時(shí),并不知道也不關(guān)心接收者是誰(shuí),有利于降低發(fā)送者和接收者之間的耦合。
帶來(lái)的風(fēng)險(xiǎn)有惡意調(diào)用、惡意接收數(shù)據(jù)、仿冒應(yīng)用、惡意發(fā)送廣播、啟動(dòng)應(yīng)用服務(wù)、調(diào)用組件、接收組件返回的數(shù)據(jù)、攔截有序廣播等。
常見(jiàn)的有以下的防護(hù)手段。
(1)最小化組件暴露
不參與跨應(yīng)用調(diào)用的組件添加android:exported="false"屬性,這個(gè)屬性說(shuō)明它是私有的,只有同一個(gè)應(yīng)用程序的組件或帶有相同用戶(hù)ID的應(yīng)用程序才能啟動(dòng)或綁定該服務(wù)。
(2)設(shè)置組件訪問(wèn)權(quán)限
參與跨應(yīng)用調(diào)用的組件或公開(kāi)的廣播、服務(wù)設(shè)置權(quán)限。
① 組件添加android:permission屬性。
② 聲明屬性
protectionLevel有4種級(jí)別:Normal、Dangerous、Signature、SignatureOrSystem。Signature、SignatureOrSystem級(jí)別只有相同簽名時(shí)才能調(diào)用。
③ 調(diào)用組件者聲明
(3)暴露組件的代碼檢查
Android 提供各種 API 在運(yùn)行時(shí)檢查、執(zhí)行、授予和撤銷(xiāo)權(quán)限。這些 API 是android.content.Context類(lèi)的一部分,這個(gè)類(lèi)提供有關(guān)應(yīng)用程序環(huán)境的全局信息。
網(wǎng)絡(luò)數(shù)據(jù)通信可能面臨的攻擊是網(wǎng)絡(luò)流量嗅探,如果網(wǎng)絡(luò)上傳沒(méi)有加密的數(shù)據(jù),網(wǎng)絡(luò)嗅探就能截獲到數(shù)據(jù),ARP攻擊可以輕松嗅探到賬號(hào)、密碼等。比較常見(jiàn)是通過(guò)HTTPS,HTTPS能有效地防止數(shù)據(jù)暴露、防止第三方截獲應(yīng)用的通信數(shù)據(jù)。
Android中實(shí)現(xiàn)HTTPS基本就這兩種方式,一種是不驗(yàn)證證書(shū),一種是有驗(yàn)證證書(shū)(預(yù)防釣魚(yú))。
第二種方式實(shí)現(xiàn)復(fù)雜一些,需要將cer證書(shū)轉(zhuǎn)換成BKS類(lèi)型。這種方式也只能簡(jiǎn)單地防止釣魚(yú),不能有效地防止釣魚(yú)。防止釣魚(yú)最終還是靠用戶(hù)分辨,在正規(guī)渠道下載應(yīng)用。應(yīng)用證書(shū)也能起到驗(yàn)證客戶(hù)端的功能,使用證書(shū)驗(yàn)證客戶(hù)端不合適,如果使用證書(shū)驗(yàn)證客戶(hù)端,證書(shū)必須存放在應(yīng)用程序中或使用時(shí)下載,Android應(yīng)用都是一個(gè)APK文件,很容易獲取到里面的文件,如果是下載方式,更容易通過(guò)下載地址獲取。如果想驗(yàn)證客戶(hù)端的話(huà),使用so文件封裝數(shù)據(jù)更好。
文章標(biāo)題:網(wǎng)絡(luò)安全攻防:Android系統(tǒng)安全之?dāng)?shù)據(jù)安全
標(biāo)題鏈接:http://www.5511xx.com/article/coioegc.html


咨詢(xún)
建站咨詢(xún)
