【发布时间】:2016-12-18 22:16:16
【问题描述】:
我正在开发一个小型多人游戏应用程序,它要求用户拥有个人资料并允许他们拥有个人资料图片。
游戏服务器将托管在 AWS EC2 上,我计划将 DynamoDB 与额外的 Redis 缓存一起用作数据库。要存储个人资料图片,我想使用 S3。
S3 服务器将可以直接从应用程序访问,因为我不想通过我的游戏服务器路由所有流量。现在我需要创建一种安全的方式让用户 起来并下载个人资料图片。每个用户都可以上传他的头像,但不是所有其他用户都可以下载。
上传应该不是问题,因为我可以使用我的游戏服务器签署上传链接。
我更关心的是下载。游戏中有“好友系统” 并且只有您的朋友可以看到您的头像。现在我想了几种方法来安全地存储这些图片以确保我的用户的隐私。
对 url 做一些事情: 所以这个的基本思想是,我将给我们一个攻击者很难猜到的 url。 http://s3-aws-region.amazonaws.com/profilpictures/[userid+random128bit] 但我不知道这是否足够。也许如果有更多的随机位?
加密图片: 只需加密图像。我会使用带有 128 位密钥的 AES,该密钥对于每张图片都不同,并在用户设备上生成。服务器将存储密钥并仅将其提供给正确的人。 作为 url,我可以使用 http://s3-aws-region.amazonaws.com/profilpictures/userid 使 url 可计算。缺点:攻击者可以计算 url 并获取加密图片。有问题吗?
两者都做: 为我的用户保证大部分隐私的方法只是上述两者的结合。但这足够了吗?或者甚至太多?
那么您如何看待这些方法?有什么我没有想到的吗?
【问题讨论】:
标签: security amazon-web-services amazon-s3