作为移动服务器应用程序的一部分,我们希望用户将图像直接上传到S3服务,而不是将其上传到后端服务器,以减轻后端并使其更专注于其主要功能。
我们对AMI用户做了限制性政策(我们正在为所有移动用户使用一个AMI用户,可以吗?)谁被允许上传到某个存储桶,问题是:如果被盗访问和密钥,如何我是否可以阻止攻击者任意上传图片以填充我的存储空间,从而对我的服务造成一种伤害。
我应该遵循哪些技巧/策略来更好地保护我的帐户
答案 0 :(得分:3)
首先,从未在您的移动应用中嵌入您的亚马逊访问密钥/密钥。如果密钥被发现/被盗,你唯一的办法是撤销令牌,但是你的整个应用程序对每个人来说都是死的。
相反,请使用Amazon Cognito为您的应用的每个用户获取临时凭据。
产品信息:https://aws.amazon.com/cognito/details/#credentials
获取开发人员指南的凭据部分:http://docs.aws.amazon.com/cognito/devguide/identity/getting-credentials/
答案 1 :(得分:0)
亚马逊congnito很棒,但它不是最适合我们的情况,它需要用户登录身份验证提供商(亚马逊,Facebook等)才能获得对S3上某些图像的访问权限,我们不会这样做。我想,因为我们的一些用户没有在任何这些身份验证提供商上拥有帐户。
未经授权的访问也不是解决方案。
我们遇到的更好的解决方案是使用
如果他们都允许一种非常聪明的方式让您的移动用户(或网站)在没有凭据的情况下上传图片,他们只需传递签名字符串(他们从我们的后端服务器获得某种代币)就可以上传任何内容图像到他们的网站。
P.S。它们都允许我们将图像备份到Amazon S3。
除了其他强大的功能外,我们很乐意决定使用其中一个。