預設情況下,儲存到內部儲存的檔案是應用的私有檔案,其他應用(和使用者)不能訪問這些檔案。 當使用者解除安裝您的應用時,這些檔案也會被移除。
內部儲存,使用者如果不root手機是看不到的內部儲存的。通常使用者看到的都是外部儲存,使用者可以操控的也只是
外部儲存,
我們可以通過
程式來訪問內部儲存getfiledir()
官方關於內部儲存。
每個相容 android 的裝置都支援可用於儲存檔案的共享「外部儲存」。 該儲存可能是可移除的儲存介質(例如 sd 卡)或內部(不可移除)儲存。 儲存到外部儲存的檔案是全域性可讀取檔案,而且,在計算機上啟用 usb 大容量儲存以傳輸檔案後,可由使用者修改這些檔案。
這裡提醒大家一點,千萬不要簡單得理解外部儲存就是sd卡里的儲存,我之前對這是有些模糊。如果對內部儲存外部儲存不是很清晰,
看這裡,官方關於外部儲存
這裡是借用了一下別人部落格的圖,
大家看到,有包名的路徑我們都是呼叫context中的方法來獲得,
沒有包名的
路徑,我們直接呼叫environment中的方法獲得。
attention please:我要說的就是我會忘記的東西
從 android 4.4 開始,讀取或寫入應用私有目錄中的檔案不再需要read_external_storage
或write_external_storage
許可權。
因此,您可以通過新增
maxsdkversion
屬性來宣告,只能在較低版本的 android 中請求該許可權:
...
總結一下:
當我們不希望使用者看到我們的資料,也不希望其他應用程式訪問我們的資料時,我們使用內部儲存。當然使用內部儲存也不是一定不能與其他應用共享這裡的檔案,api 17以後
fileprovider
與flag_grant_read_uri_permission
配合使用,具體請看官方說明,但是內部儲存的空間有限,我們首先選擇的應該還是外部儲存。
外部儲存分為兩個部分,乙個部分是公共的部分,其他應用可以訪問,一部分是私有部分,也帶有包名,這裡我們可以存放應用私有的資訊。其他應用不允許訪問。一般情況下我們的檔案希望使用者和其他應用程式共享的時候,我們都放在外部儲存裡面,不希望別的應用程式訪問我們的資源時放在外部儲存的私有目錄裡(即帶有包名的目錄),如果想要加密可以用對稱加密,秘鑰存放在android keystore裡面就可以了。當然如果事先在apk端已經出現秘鑰而不是伺服器傳遞過來,那麼這個時候就不能放在keystore裡了,而要選擇存放在native層,用so檔案取得,注意native層要用簽名驗證,不然別人拿到你的so用你的so檔案也是能獲取你的密碼。
iOS安全系列彙總
知乎專欄 書籍推薦 工具篇構建和部署 your first tweak 總結hack必備的命令與工具 後台daemon非法竊取使用者itunesstore資訊 阻止gdb依附 鍵盤快取與安全鍵盤 使用keychain dumper匯出keychain資料 二進位制和資源檔案自檢 ios7的動態庫注入...
iOS安全系列彙總
知乎專欄 書籍推薦 工具篇構建和部署 your first tweak 總結hack必備的命令與工具 後台daemon非法竊取使用者itunesstore資訊 阻止gdb依附 鍵盤快取與安全鍵盤 使用keychain dumper匯出keychain資料 二進位制和資源檔案自檢 ios7的動態庫注入...
安全系列之網頁防篡改系統
3手裡的乙個雲專案交付了半年,客戶業務系統也順利通過了雲上等保測評二級,為了提前為等保 做好準備,客戶擬購買一些雲上的安全服務,需要服務商提供安全諮詢,為此我們認真研究了一系列安全服務的工作原理,以提公升安全服務能力。今天我們從比較簡單的網頁防篡改系統入手。一 為什麼需要網頁防篡改 網頁相當於是乙個...