php – 安全地提供来自Amazon S3的文件
我有一个将用户文件上传到S3的应用程序.目前,文件夹和文件的ACL设置为私有.
我创建了一个存储以下信息的db表(称为docs): id user_id file_name (original file as specified by the user) hash_name (random hash used to save the file on amazon) 因此,当用户想要下载文件时,我首先在db表中检查他们是否有权访问文件.我宁愿不先将文件下载到我的服务器然后发送给用户 – 我希望他们能够直接从亚马逊获取文件. 是否可以依赖非常长的hashname(任何人都无法随机猜出文件名)?在这种情况下,我可以将每个文件的ACL设置为public-read. 或者,我可以使用其他选项来提供文件,同时保持文件的私密性吗?
请记住,一旦链接在那里,没有什么可以阻止用户与他人共享该链接.然后,没有什么能阻止用户将文件保存到别处并共享指向文件副本的链接.
最好的方法取决于您的具体需求. 选项1 – 限时下载URL 如果适用于您的方案,您还可以创建到S3内容的过期(有时间限制)自定义链接.这将允许用户在有限的时间内下载内容,之后他们将不得不获得新的链接. http://docs.amazonwebservices.com/AmazonS3/latest/dev/S3_QSAuth.html 选项2 – 混淆的URL 如果您重视通过Web服务器运行文件,而不是有意识地共享URL(无论多么模糊),那么请使用难以猜测的链接名称.这将允许链接“永远”保持有效,这意味着链接可以“永久”共享. 选项3 – 通过您的服务器下载 如果您担心要共享的链接并且当然希望用户通过您的网站进行身份验证,请在验证用户凭据后通过您的网站提供内容. 此选项还允许链接“永久”保持有效,但要求用户登录(或者可能只是在浏览器中有一个身份验证cookie)才能访问该链接. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |