安全内容提供商

时间:2017-02-14 10:38:27

标签: android security android-contentprovider android-contentresolver

是否可以将内容提供商设为只读?我知道这个问题很少被问到,但根据所有这些问题(例如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" />

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

<uses-permission android:name="com.test.WRITE_DATABASE" />

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

1 个答案:

答案 0 :(得分:1)

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

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