Android 沒有沙盒保護機制嗎,WhatsApp 信息為何可被隨意訪問?
via Any Android app can read your WhatsApp database
不是。
Android 對每個應用程序定義了私有的存儲區域,這個區域通過 Linux 的文件系統許可權控制,僅僅應用自己可以隨意讀寫,問其他應用無法訪問不屬於自己的私有數據。私有目錄的路徑可以通過 Context-&>getFilesDir() 來獲取。
除了私有存儲區域以外,SD 卡上都是公共區域,所有人可讀寫。
一個 app 選擇將隱私數據保存在公共區域,那是 App 選擇取向問題。與系統其實沒有什麼關係。當然可以問 android 為什麼要允許讀寫 SD 卡上任意目錄,個人覺得這是歷史問題,如果現在禁止了,估計一大堆讀寫 SD 卡的應用程序會出現兼容性問題,為了保證這種兼容性,感覺 android 不會將讀寫 SD 卡這種功能禁止掉。
Android程序可以訪問私有存儲(/DATA/DATA/$PackgeName)和共享存儲(/SDCARD)兩個存儲區域,IOS中在兩個App間共享大體積的數據很難,在Android就不是問題。聊天記錄這種東西不該放到共享區域,這個算是WhatsApp的設計缺陷。
做比喻就是住戶非要把馬桶放在了陽台上,鄰居眼一斜就看到他的屁股了,放到洗手間里的話想偷窺就沒那麼容易了。
我覺得更應該是由於儲存空間的關係。
在以前,不是任何一台設備都擁有幾個g的系統儲存空間,他們很多都只有100~200m的位置來存放app文件。
android中私有文件放在/data/data/$pakage 中,但是/data屬於系統目錄,如果把文件儲存在裡面,那勢必會減少存放app文件的空間,這是得不償失的。所以很多與系統文件無關的資源文件就只能放在sdcard中。
由於這種歷史原因,雖然很多最新版的設備已經大幅提升其系統儲存空間,但開發者們仍舊會將自身的資源文件放到sdcard中。
並且在最新的android4.4中,對於android程序的資源文件建議儲存在/sdcard/Android/$package 中,我覺得這是一個很好的進步,規範了文件的儲存位置,離它的訪問許可權管理還會遠嗎?
推薦閱讀:
TAG:WhatsApp | Android | iOSvsAndroid | 沙盒計算機安全 |