2011-05-25 87 views
13

我們如何確保某些應用程序無法訪問存儲在內容提供商中的數據,其中某些其他應用程序可以訪問該數據?基本上我需要允許我的一些應用程序訪問存儲在Content Provider中的數據,但我不希望所有應用程序都能夠訪問該數據。我怎樣才能做到這一點?如何跨應用程序限制內容提供商數據

謝謝。

回答

16

最簡單的方法是使用您定義的權限來保護內容提供者。使其成爲簽名權限,以便只有使用您的證書籤名的應用才能獲得該權限。

請參見:

http://developer.android.com/guide/topics/security/security.html

http://developer.android.com/reference/android/R.styleable.html#AndroidManifestProvider

http://developer.android.com/guide/topics/manifest/provider-element.html

如果這樣做基於證書是不夠的,你需要寫權限檢查自己。這是通過調用Binder.getCallingUid()來調用您的應用程序,並確定給定的uid是否有權訪問您的提供程序。但實際上實施一項實際上安全的不同政策需要大量的仔細思考和設計。

4

在AndroidManifest.xml,在你的ContentProvider的屬性的屏幕上,你有兩個領域:

閱讀權限 WritePermission

所以,你可以定義安全字符串(也可能路徑到一些文件),這些文件是訪問你的ContentProvider的權限。

要訪問您的內容提供者的應用程序必須在其UsesPermission元素中添加那些應用程序。

+0

如果該讀取權限字符串泄露並且某些第三方應用程序也將其添加到其清單中,該怎麼辦?提供者如何避免這種情況 – Javanator 2018-02-22 14:07:26