0

我试图弄清楚如何在未知数量的应用程序之间以安全的方式共享数据,每个应用程序都有不同的认证。在我看来,内容提供者是最好的方法。(?)但我的问题是如何在不加密数据的情况下保护数据免受恶意应用程序的攻击。我想为每个应用程序设置一个 URI 并防止恶意应用程序接近。我怎样才能做到这一点?

4

1 回答 1

1

最安全的方法是使用 RSA 密钥对。您的内容提供商将需要连接到 Web 服务,以在可接受的密钥对上保持最新状态。然后内容将验证查询应用程序提供的签名,继续提供数据。

任何其他方法都可能受到攻击。例如,通过简单地安装带有批准的包名称的恶意应用程序的调试或签名版本,检查查询应用程序的包名称很容易被欺骗。

您必须将密钥对“挤压”到现有的 ContentProvider 调用中。最简单的方法是将 RSA 密钥作为 Uri 的一部分传递。优选地,总是第一个路径段,即:

content://mysharedcontent/rsakey/somegroup/sometable

有争议的是,将 RSA 密钥作为最后一个路径段是好的设计:

content://mysharedcontent/somegroup/sometable/rsakey

归根结底,这是一种风格选择。

收到请求后,您应该检查您的安全存储(使用 SHA-1 加密的文件)是否 rsakey 合法。如果不检查服务器,请同时验证和更新您的本地存储。

有了这个,应用程序将有一个相对具体和安全的方式来与你的 ContentProvider 进行身份验证。

于 2013-05-22T17:20:05.540 回答