我正在尝试建立一个使用亚马逊SimpleDB的安卓应用程序。我已经查看了Amazon提供的示例代码的源代码。然而,在演示中,凭据只是存储在Constants.java中,我认为这种方法根本不安全,因为即使启用了Proguard,也可能会有人反编译apk来暴露凭据。
因此,我去看了一篇关于这方面的亚马逊文章,我不太理解,因为我不太熟悉android/java中的密码学。
我应该如何真正允许从我的应用程序访问亚马逊SimpleDB,同时保护访问密钥不受外部各方的影响?
编辑1:我想使用应用程序从SimpleDB中检索数据,如列表视图所示。例如,像关于食物和其他用户的简单评论一样,其他用户将能够检索到与其他用户发布的评论相同的评论。也许如果用户想要发表评论,他们需要注册一个帐户并登录。
发布于 2014-02-18 05:46:58
AWS提供了几种解决方案,用于在硬编码之外将凭据传递到设备,其中一种或两种都可以满足您的特定需求:
我们的samples repository包含了与这两种技术集成的示例,但在SimpleDB示例中并没有专门介绍。
发布于 2014-02-17 21:11:57
没有万无一失的方法可以做到这一点。无论我们采用哪种方式,都可能会有人窃取你的APK并破解密码(你通过混淆代码来使其变得困难,但这只是使其变得困难而不是万无一失)。
如果您的应用程序要求用户登录(使用来自您的后端的某些凭据或使用openid),则使用它来允许用户访问您的服务器。然后,在服务器代码中,您可以使用IAM角色(http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)提供AWS凭据。
因此,您的web (REST) API访问是通过使用用户提供的密码来允许的,并且您的服务器代码通过IAM角色获得访问权限。这是最安全的方式。
如果你不想要你的服务器/后端,那么就没有真正万无一失的方法了。
来自上面@Bob的答案是如何实现这一点的精确答案:https://stackoverflow.com/a/21839911/2959100
https://stackoverflow.com/questions/21825029
复制相似问题