簡體   English   中英

Android IPC和ContentProvider的區別

[英]Android IPC and ContentProvider differences

我正在嘗試確定將存儲在手機上的加密內容暴露給第三方應用程序的最佳方法。 內容很敏感,需要受到保護,因此只有某些應用程序可以訪問它。 我正在研究的方法是 IPC 和 Content Provider。 以下是我認為對於我的情況來說兩者的優點和缺點。

IPC - 專業版

  • 對客戶的靈活響應類型。 可以返回不同的錯誤代碼和受限訪問級別

IPC - 缺點

  • 比 Content Provider 實現起來更復雜

  • 必須編寫自己的方式來保護對內容的訪問。

內容提供者 - 專業人士

  • 易於實施

  • 通過提供提供者定義權限輕松保護訪問:protectionLevel=signature

內容提供者 - 騙局

  • 為了確保訪問安全,內容提供者的密鑰簽名必須與不理想的第 3 方應用程序共享。

  • 返回的結果類型的靈活性有限。 內容提供程序只為查詢的列返回 Cursor object。


性能和電池是否有任何重大差異?
可以異步執行嗎?
對列表還有其他意見/建議嗎?

通過提供提供者定義權限輕松保護訪問:protectionLevel=signature

僅當您是唯一使用內容提供商的公司時,這才有效。

為了確保訪問安全,內容提供者的密鑰簽名必須與不理想的第 3 方應用程序共享。

我會將此描述為“可能符合'精神錯亂'的醫學定義”。 您的第三方將能夠修改您的“安全”數據、偽造您發布的應用程序、將您的簽名密鑰泄露給惡意軟件作者等。

內容提供程序只為查詢的列返回 Cursor object。

除了基於 Cursor 的內容提供者Cursor之外,您還可以使用基於文件的內容提供者 API。 請參閱ContentResolver上的openInputStream()等方法。

性能和電池是否有任何重大差異?

不是特別。

可以異步執行嗎?

兩者都可以,盡管我個人覺得服務更容易一些。

對列表還有其他意見/建議嗎?

權限同樣適用於服務和內容提供商,但我想再次強調,您不應該與第三方共享您的簽名密鑰,除非可能是在槍口下。

我無法回答您的全部問題,但我可以解決關鍵共享部分。 您的 APK 使用您的公鑰/私鑰對的公共部分進行簽名。 可以將您的公鑰附加到另一個應用程序以偽裝成您的應用程序,但有人需要您的私鑰才能使用您的公鑰以您的名義上傳應用程序。

公鑰證書,也稱為數字證書或身份證書,包含公鑰/私鑰對的公鑰,以及標識密鑰所有者的其他一些元數據(例如,名稱和位置) . 證書的所有者持有相應的私鑰。

當您對 APK 進行簽名時,簽名工具會將公鑰證書附加到 APK。 公鑰證書充當“指紋”,將 APK 與您和您對應的私鑰唯一關聯。 這有助於 Android 確保您的 APK 的任何未來更新都是真實的並且來自原作者。

(來自https://developer.android.com/studio/publish/app-signing.html

此外,我的理解是其他應用程序與您的應用程序共享其密鑰,而不是相反。 如果您可以使用其他設置之一,則也不需要簽名級別保護。 根據https://developer.android.com/guide/topics/manifest/permission-element.html#plevel ,您可以選擇將應用程序設置為 4 個不同的保護級別之一。 大多數應用程序不包含敏感到需要“危險”設置的數據,因此正常可能適用於大多數應用程序。

此外,您的應用程序的簽名(公鑰)已經通過 PackageManager class 中可用的方法公開。 我廣泛查看了 Android 開發人員頁面,並通讀了另一篇文章的非常有用的答案以找到此內容。 似乎任何應用程序都可以通過此處描述的方法獲取您應用程序的公鑰Android 內容提供商保護級別和 CommonsWare 的不同密鑰

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM