Amazon S3:不允许客户端修改已经上传的图片?

Amazon S3: Do not allow client to modify already uploaded images?

我们使用 S3 进行图片上传。我们批准所有上传到我们网站上的图片。过程是这样的:

  1. 客户端从 javascript 的给定路径将图像上传到 S3。 (使用令牌)
  2. 一次,我们从 S3 取回 url,我们将 S3 路径保存在我们的数据库中 'isApproved flag false' in photos table.
  3. 图片通过我们的主管批准后,图片就会开始显示在我们的网站上。

问题是用户可能会在批准过程后通过生成的令牌更改图像(到一些淫秽图像)。我们能以某种方式阻止用户像这样修改图像吗?

一个临时修复方法是缩短令牌生命周期间隔,即 5 分钟,并仅在该间隔后批准图像。

我看到了 this 但没有帮助,因为版本控制也在替换已经上传的图像并将之前上传的图像移动到新的版本化路径。

有更好的解决方案吗?

您应该围绕上传的图像创建一个工作流程。该过程将是:

  • 客户端上传图片
  • 这会触发对 you/your 系统的 Amazon S3 事件通知
  • 如果您批准该图片,请将其移至提供您的内容的 public 存储桶
  • 如果您不同意该图片,请将其删除

这可以是使用 AWS Lambda 函数更新数据库和标记照片以供批准的自动化过程,也可以在通过 Amazon SNS 收到电子邮件通知后手动完成。选择权在你。

这种方法的好处是一旦通过就无法替代。