我在Amazon S3中存储了几个PDF文件。每个文件都与用户相关联,只有文件所有者才能访问该文件。我在下载页面中强制执行此操作。但实际的PDF链接指向Amazon S3网址,任何人都可以访问。
如何为此网址强制执行访问控制规则?(不使我的服务器成为所有PDF下载链接的代理)
答案 0 :(得分:8)
我建议使用具有过期日期的Amazon S3 authenticated REST URLs。它们允许对非公共S3对象进行临时,过期访问。
那就是说,如果他们要分享网址,是什么阻止他们共享文件?
答案 1 :(得分:6)
S3帐户中的每个文件都可以具有特殊访问权限(ACL)。您应该将所有PDF ACL设置为private
。然后没人能够访问它们。
S3有一个API,允许您“临时”授予读取权限。例如,Amazon's S3 PHP Library具有getAuthenticatedURL (string $bucket, string $uri, integer $lifetime, [boolean $hostBucket = false], [boolean $https = false])
函数。
这将使您能够在规定的时间内(例如5分钟)访问PDF - 如果您立即将用户重定向到S3,这就足够了。