保护S3 Bucket免受来自第三方上传的重播攻击

时间:2015-12-28 12:52:40

标签: security amazon-web-services file-upload amazon-s3 architecture

我为客户创建了一种将大文件上传到S3供我们处理的方法。

我构建了一种机制,允许客户端发送他们拥有的文件列表,作为回报,他们获得了一个HTTP请求,他们需要向他们提供的文件之一发送到S3以及附加的文件。这消除了我们服务器上传的压力,我们可以通过S3存储桶的通知获取任何已上传的文件。

我的问题是重播攻击。如果某一方要求发送文件并收回请求,他们可以一遍又一遍地重播相同的请求,从而使我们处于请求中。我并不关心覆盖文件,因为Contents-MD5标头强制文件是同一个文件(尽管存在冲突)。我也不在乎关于再次上传文件的通知。

我考虑过生成一个策略,该策略仅允许使用特定令牌上传,该令牌每X分钟更改一次。如果有人想要重播攻击,他们会失败并且必须重新请求我们的S3请求(这会失败,因为上传已经事先完成)。我不确定旋转这样一个令牌会有多少最佳做法,并担心它会导致许多合法请求花费太长时间才能开始失败。

在这种情况下是否还有其他我不知道应该使用的机制?

1 个答案:

答案 0 :(得分:1)

  

担心这也会导致许多合法请求花费太长时间才能开始失败。

您可以通过使用较短的到期时间对URL进行签名来消除这种特别的担忧。身份验证和授权(包括签名验证)发生在请求的开头。 S3不会削减上传或下载短片,因为签名在长请求中间到期。

以编程方式,重复,动态更改存储桶策略绝对不是最佳做法。

请注意,它似乎没有明确记录,但是当S3拒绝请求时,(请忽略但仍然非零)每请求费用显然仍然适用,因此让S3拒绝对其进行冗余覆盖具有相同内容的对象不太可能成为值得实现的解决方案。