在AWS S3上安全地存储用户个人资料图片

时间:2016-12-18 13:50:41

标签: security amazon-web-services amazon-s3

我正在开发一款小型多人游戏应用程序,要求用户拥有个人资料并允许他们拥有个人资料照片。

游戏服务器将托管在AWS EC2上,作为数据库,我计划将DynamoDB与其他Redis缓存一起使用。要存储个人资料图片,我想使用S3。

S3服务器可直接从应用程序访问,因为我不想通过我的游戏服务器路由所有流量。现在我需要创建一种让用户安全的方式 和下载个人资料图片。允许每个用户上传他的个人资料图片,但不是每个其他用户都可以下载它。

上传不应该是一个问题,因为我可以使用我的游戏服务器签署链接进行上传。

我更关心的是下载。游戏中有一个“朋友系统” 只有你的朋友才能看到你的个人资料照片。现在我有几种方法可以安全地存储这些图片,以确保我的用户的隐私。

  1. 使用网址做一些事情: 因此,基本的想法是,我将为我们提供一个难以猜测攻击者的网址。 http://s3-aws-region.amazonaws.com/profilpictures/[userid+random 128位] 但我不知道这是否足够。也许如果有更多的随机位?

  2. 加密图片: 只需加密图像。我会使用带有128位密钥的AES,这对于每张图片都是不同的,并且在用户设备上生成。服务器将存储密钥并仅将其提供给合适的人员。 作为网址,我可以使用http://s3-aws-region.amazonaws.com/profilpictures/userid使网址可以计算的内容。缺点:攻击者可以计算网址并获取加密图片。这是一个问题吗?

  3. 同时执行以下操作: 保证我的用户最隐私的方法只是上述两者的组合。但这够了吗?或者甚至可能太多了?

  4. 那你怎么看待这些方法呢?有什么我没想到的吗?

1 个答案:

答案 0 :(得分:1)

不要过度复杂化。只需将签名的网址发送给应该看到图片的用户。

http://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURL.html