直接在应用程序代码中添加 AWS 访问密钥和密钥绝对不是一个好方法,主要是因为应用程序驻留在用户设备上(与服务器端代码不同),并且可以通过逆向工程来获取凭证,然后可能会被滥用.
虽然我到处都能找到这些信息,但我无法找到解决这个问题的明确方法。我有哪些选择?我阅读了有关临时凭证的令牌自动售货机架构,但我不相信它会更好。如果我可以对密钥进行逆向工程,那么我可以对请求临时凭证的代码进行逆向工程。一旦我拥有一组访问 S3 的临时凭据,我就如同拥有密钥一样出色。我可以一次又一次地请求临时凭证,即使它们很快就会过期。总而言之,如果一个应用程序可以做某事,我可以像恶意用户一样做。如果有的话,TVM 在管理方面可能会更好一些(轮换凭证,以及在违反情况下更改密钥等)。请注意,我们可以对密钥设置相同的访问限制,
此外,如果亚马逊不希望人们直接在应用程序中使用密钥,他们为什么不在他们的 SDK 中阻止它,并强制执行 TVM 或正确的解决方案。如果你留下一条路,人们就会使用它。我读了几篇这样的文章,想知道为什么?: http: //blog.rajbala.com/post/81038397871/amazon-is-downloading-apps-from-google-play-and
请帮助我了解这是否更好,以及是否有一个完美的(或可能是好的)解决方案可以解决这个问题。我确实知道 TVM 更易于管理(一旦凭据被泄露,事件响应速度也会更快),但我不相信它更安全。
PS:这主要与匿名 TVM 有关,因为用户不会登录我们的应用程序。
PS2:我很清楚 TVM 和应用程序之间的安全通信以获取临时凭据,发布应用程序注册。我更关心的是什么会阻止恶意用户使用新的 UDID 注册,并获得临时凭证,从而阻止 S3 访问。