在Android应用程序之间共享敏感信息的方法

时间:2014-06-28 16:38:44

标签: android android-keystore android-securityexception

我在Google Play上有多个应用。我正在寻找更好的方法让他们跨应用程序共享一些敏感数据(比如某种令牌信息)。我尝试过内容提供商方法,但这并不符合要求。我听说使用Android KeyChain或密钥库,数据可以保存在安全的可共享位置。但我没有找到很多有用的示例代码来实现这一点。你能分享/指向一些示例代码,以便能够保存到钥匙串/密钥库并从中检索吗?

2 个答案:

答案 0 :(得分:1)

如果您的应用使用相同的证书进行签名,则可以使用签名级权限授予他们相互授予其他应用无法使用的权限。然后,他们可以使用由这些权限过滤的意图来发送彼此数据。

答案 1 :(得分:1)

您最安全的选择是为所有应用分配sharedUserId

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="mypackage"
          android:sharedUserId="mySharedUID"

设置sharedUserId会强制Android分配同一个Linux用户 对于您的所有共享应用,从而使他们可以阅读彼此的私人数据。

它甚至允许它们在相同的进程上运行,尽管我认为不需要 在你的情况下。

完成此操作后,您可以使用shared prefs内部存储器文件共享敏感数据 或sqlite数据库。它们都是Linux用户的范围,因此所有共享应用程序都可以看到它们。

如果您的数据非常敏感,请记住不要将其放在内部存储器中 足够。您还需要某种加密:http://android-developers.blogspot.co.il/2013/02/using-cryptography-to-store-credentials.html

最后 - 请注意,sharedUserId机制要求您使用标记所有共享应用程序 相同的证书。