0

我们正在使用s3_file_field将视频直接上传到 S3,我们计划使用客户端验证来确保上传在我们的大小限制范围内,但我担心黑客可能会关闭 JS,然后上传500GB 文件到我们的 S3 存储桶。

过去,每当我使用客户端验证时,我也有服务器端验证支持它们,所以我从来没有太担心用户关闭 JS,但我们不能有服务器端在这里进行验证,因为我们将直接进入 S3。

黑客绕过客户端验证有多容易?只是关闭JS的情况吗?如果在禁用 JS 时禁用上传表单会有所帮助吗?

我们是否应该实施工作人员或观察员来扫描上传的视频,并在上传后的某个时间对它们进行验证,然后才能被用户访问?

4

2 回答 2

2

S3 存储桶本身没有任何最大文件上传大小限制。据我所知,没有任何 AWS 政策规定。

但是 S3 支持CORS,这是s3_file_field使这种直接上传工作的原因。如果 S3 支持content-length-rangeCORS 的策略元素,您可以添加它,然后可能会被覆盖。

此外s3_file_field实际上是jQuery File Upload的扩展,并且具有各种验证选项,包括max_file_size此处记录的s3_file_field默认为max_file_size500 兆字节,看来您可以覆盖它

无论哪种方式,如果用户禁用 javascript,那么他们将无法运行 JQuery File Upload,这意味着他们根本无法通过 CORS 上传任何内容。

只需确保您AllowedOrigin在生产中指定,如s3_file_field文档中所述。

于 2013-07-29T11:11:08.593 回答
1

客户端大小检查当然可以被覆盖。但是,每当您直接上传到 s3 时,都会有一个策略文档(使用您的 aws 凭证签名)指定允许和不允许的内容。

特别是,您可以设置文件大小的限制。看起来s3_file_field设置正确,所以即使有人绕过客户端检查,s3 也会拒绝上传,因为它不符合策略。

于 2013-07-29T11:24:02.657 回答