安全内容提供商

Lau*_*Lau 4 security android android-contentresolver android-contentprovider

是否可以将内容提供者设置为只读?我知道这个问题被问了几次,但根据所有问题(例如this),我必须编写自己的自定义写入权限。

<permission android:name="com.test.WRITE_DATABASE" android:protectionLevel="normal" />
<permission android:name="com.test.READ_DATABASE" android:protectionLevel="normal" />


//...

  <provider
     android:authorities="xxx"
     android:name="xxx"
     android:exported="true"
     android:readPermission="com.test.READ_DATABASE"
     android:writePermission="com.test.WRITE_DATABASE" />
Run Code Online (Sandbox Code Playgroud)

但是黑客可以反编译我的应用程序并查看清单文件,然后他可以轻松地编写自己的应用程序:

<uses-permission android:name="com.test.WRITE_DATABASE" />
Run Code Online (Sandbox Code Playgroud)

所以它几乎没用...我有几个应用程序可以在我的应用程序中使用一个内容提供程序。只有此应用程序应具有写入权限 - 其他应用程序只能从此数据库读取。有什么想法如何解决这个问题吗?

mik*_*_os 6

请参阅此处有关权限的文档: https ://developer.android.com/guide/topics/manifest/permission-element.html

您的问题的答案是android:protectionLevel许可的属性。您可以将其设置为signature只有使用相同密钥签名的应用程序才能请求此权限。