我们正在使用s3_file_field将视频直接上传到S3,我们正计划使用client side validations来确保上传符合我们的规模限制,但我担心黑客可能会能够关闭JS,并将500GB文件上传到S3存储桶。
过去,每当我使用客户端验证时,我也都有服务器端验证支持它们,所以我从来没有太担心用户关闭JS,但我们不能拥有这里的服务器端验证,因为我们直接进入S3。
黑客绕过客户端验证有多容易?这只是一个关闭JS的案例吗?如果我们在禁用JS时禁用上传表单会有帮助吗?
我们是否应该实施工作人员或观察员来扫描上传的视频,并在上传视频后的某个时间以及用户可以访问之前对其进行验证?
答案 0 :(得分:2)
您可以在S3存储桶上放置任何最大文件上载大小限制。据我所知,没有任何AWS政策规定。
但S3支持CORS,这是s3_file_field
用于使此直接上传工作的内容。如果S3支持CORS的content-length-range
策略元素,您可以添加它,然后可能会被覆盖。
s3_file_field实际上是jQuery File Upload的扩展,它有各种验证选项,包括max_file_size
documented here。在s3_file_field
中,默认max_file_size
为500 MB,显示为you can override it。
无论哪种方式,如果用户禁用javascript,那么他们将无法运行JQuery File Upload,这意味着他们根本无法通过CORS上传任何内容。
请确保您在生产中指定AllowedOrigin
,如s3_file_field
文档中所述。
答案 1 :(得分:1)
客户端尺寸检查当然可以被覆盖。但是,无论何时直接进行s3上传,都会有一个策略文档(使用您的aws凭据签名),指定允许和不允许的内容。
特别是您可以设置文件大小限制。看起来s3_file_field
设置正确,所以即使有人绕过客户端检查,s3也会拒绝上传,因为它与策略不匹配。