Security 在AWS S3上安全地存储用户配置文件图片

Security 在AWS S3上安全地存储用户配置文件图片,security,amazon-web-services,amazon-s3,Security,Amazon Web Services,Amazon S3,我正在开发一个小的多人游戏应用程序,它要求用户拥有个人资料,并允许他们拥有个人资料图片 游戏服务器将托管在AWS EC2上,作为数据库,我计划使用DynamoDB和一个额外的Redis缓存。要存储个人资料图片,我想使用S3 S3服务器将可直接从应用程序访问,因为我不想通过我的游戏服务器路由所有流量。现在,我需要创建一种安全的方式,让用户 上传并下载个人资料图片。每个用户都可以上传自己的个人资料图片,但并非所有其他用户都可以下载 上传不应该是一个问题,因为我可以使用我的游戏服务器签署上传链接 我更

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

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

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

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

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

  • 对url执行以下操作: 这样做的基本思想是,我将为我们提供一个攻击者很难猜到的url。 128位] 但我不知道这是否足够。也许如果有更多的随机位

  • 加密图片: 只需加密图像。我会使用带有128位密钥的AES,每个图片的密钥不同,并在用户设备上生成。服务器将存储密钥并仅将其提供给正确的人。 作为url,我可以使用使url可计算的内容。缺点:攻击者可以计算url并获得加密图片。这是个问题吗

  • 同时做到: 为我的用户保证大部分隐私的方法就是上述两者的结合。但这足够了吗?或者可能太多了


  • 那么,您对这些方法有何看法?有什么我没想到的吗?

    不要把事情复杂化。只需将签名的URL发送给那些应该看到图片的用户


    戴着架构师帽,S3签名URL似乎是一个不错的选择,但从移动应用程序开发人员的角度来看,使用签名URL管理缓存和图像渲染是一件痛苦的事情。由于S3端涉及的加密/解密,我在使用签名URL呈现图像时遇到了很多性能问题,尽管非常小,但对于媒体密集型移动应用程序来说,这成为一个主要问题。