【发布时间】:2020-08-23 08:35:03
【问题描述】:
最近创建了一个静态网站,托管在 s3 上,我注意到当用户检查网站的来源时,他们可以单击链接,这些链接允许他们访问单独选项卡中的图像等项目。有没有办法允许网站访问图像但限制尝试访问源图像的用户。
【问题讨论】:
标签: amazon-web-services amazon-s3 permissions bucket
最近创建了一个静态网站,托管在 s3 上,我注意到当用户检查网站的来源时,他们可以单击链接,这些链接允许他们访问单独选项卡中的图像等项目。有没有办法允许网站访问图像但限制尝试访问源图像的用户。
【问题讨论】:
标签: amazon-web-services amazon-s3 permissions bucket
用户只需在选项卡中打开资产应该没问题,如果您只是想阻止内容在您的域以外的其他地方被访问,您可以使用 Referer 头部将其锁定为仅通过您的网站.
这可以通过bucket policy similar to the one below 在 S3 中完成。
{
"Version":"2012-10-17",
"Id":"http referer policy example",
"Statement":[
{
"Sid":"Allow get requests originating from www.example.com and example.com.",
"Effect":"Allow",
"Principal":"*",
"Action":["s3:GetObject","s3:GetObjectVersion"],
"Resource":"arn:aws:s3:::awsexamplebucket1/*",
"Condition":{
"StringLike":{"aws:Referer":["http://www.example.com/*","http://example.com/*"]}
}
}
]
}
您始终可以通过将 CloudFront distribution 与 AWS WAF 结合使用以包含由引荐来源阻止的规则来增强此功能。
如果您尝试锁定此内容(是否有人需要登录才能查看或付费才能获得),您有多种选择。
【讨论】:
遗憾的是,如果没有适当的身份验证,您无法限制下载图像的能力。如果您的用户可以在他们的浏览器中看到图像,他们就可以下载它们,因为它们已经被下载了。
但您可以限制您的用户直接访问您的 S3 存储桶。为此,您可以使用 CloudFront (CF) 在您的 S3 存储桶前面。
具体来说,您可以在 CF 中设置 Origin Access Identity 并使您的网站和所有图像只能通过 CF 访问:
【讨论】: