我们的网站允许用户将他们的私人文件存储在我们的网站上,自从我们迁移到AWS以来,该网站现在位于S3存储桶中。用户可以再次下载文件,但只能在登录我们的网站后。即使他们拥有直接URL(/download.php?fileid=1234
),用户也必须先登录。
现在我们有一个下载脚本,它以块的形式从S3中提取文件,然后将其传递给用户。这工作正常,甚至允许下载恢复,如果他们的浏览器支持它。没人抱怨。
但是我有这种唠叨的感觉,我只是做错了,并且必须有某种方式允许用户直接从S3下载 - 但同样,只有在登录时到我们的网站。
我一直在关注Pre-signed URLs - 这就是我需要的吗?如果是,那么我想我应该在用户点击Location: https://bucket.s3...
时进行/download.php?fileid=1234
重定向?
如何使用支持恢复的下载管理器?恢复是否会停止工作,因为他们将使用当时过期的密钥直接转到S3?恢复是如此罕见,以至于普通人不必首先通过我们的服务器来提升速度可能是值得的...
你们如何处理来自S3的安全下载?
答案 0 :(得分:0)
你提出的两个解决方案都没问题。它取决于你是否希望所有数据都通过你的服务器(你必须扩展),或者链接是否在你设置的时间限制后过期。
我在不同情况下使用这两种方法。
我很少建议重新实施一个没有情有可原的解决方案(预期的扩展需求,安全问题等)。
是的,如果他们在到期时间后尝试访问已签名的网址,则会失败。