您可以通过将内容保留在 S3 上来保护内容,然后在 S3 上编辑存储桶策略以仅在用户单击服务器上的链接时才允许访问您的内容。例如,如果您的内容管理系统(我假设它实现某种形式的身份验证)位于 www.example.com,那么在 S3 中,转到您的存储桶的“属性”并在“权限”区域中单击“添加存储桶策略” ”。
例如,您可以使用以下代码限制对特定 HTTP 引用者的访问:
{
"Version":"2008-10-17",
"Id":"http referer policy example",
"Statement":[
{
"Sid":"Allow get requests originated from www.example.com and example.com",
"Effect":"Allow",
"Principal":"*",
"Action":"s3:GetObject",
"Resource":"arn:aws:s3:::examplebucket/*",
"Condition":{
"StringLike":{
"aws:Referer":[
"http://www.example.com/*",
"http://example.com/*"
]
}
}
}
]
}
注意:此示例来自S3 文档
我已经成功地使用了这种方法。即使有人查看页面源并尝试直接访问 S3 存储桶源,他们也会收到“拒绝访问”。只有当他们通过 www.example.com 的身份验证并单击链接以从该经过身份验证的浏览器会话中查看或下载您的内容时,才能访问这些文件。