amazon-web-services - AWS 防止盗链的政策
问题描述
我正在尝试在 S3 上进行设置以防止盗链。
我从这里得到了建议:如何在不使用签名 URL 的情况下防止 Amazon S3 上的热链接?
还有这个:https ://kinsta.com/blog/hotlinking/
但是,我无法让它工作。
首先,我阻止对存储桶的所有公共访问,因此“权限”选项卡上的设置如下所示:
我已经设置了这样的政策:
{
"Version": "2008-10-17",
"Id": "HTTP referer policy example",
"Statement": [
{
"Sid": "prevent hotlinking",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mybucket/*",
"Condition": {
"StringLike": {
"aws:Referer": [
"http://example.co.uk/*",
"http://www.example.co.uk/*",
"https://example.co.uk/*",
"https://www.example.co.uk/*",
"http://localhost/01-example/*"
]
}
}
}
]
}
但是,当我尝试从引用站点访问存储桶中的内容时,我看不到 S3 内容。
我究竟做错了什么?
解决方案
阻止公共访问选项将覆盖您正在使用的任何其他配置,因此您的存储桶策略将不会生效。
要使您的策略起作用,您需要禁用此功能,您可以选择启用几个选项以防止对存储桶策略进行进一步更改。
在与您的政策相关的说明中,Referer
可以伪造标题以仍然访问这些资产,因此不应将其视为灵丹妙药。
另一种使用的解决方案是使用 S3 签名 URL 或查看在 S3 存储桶前使用CloudFront 分配,然后使用签名 cookie。
推荐阅读
- python - 短程序的 Python 循环问题
- java - 拆分字符串行列表并将单词添加到新列表
- git - 是否应该在 git 的 .history 文件夹中跟踪文件
- php - 如何在 Laravel 中显示通知?
- javascript - 在Javascript中按年份过滤对象
- python - 尝试在 Python 包中读取 JSON 文件
- javascript - CSS 变换: translateX(向右);
- xml - 忽略 xpath 选择器中的命名空间不起作用
- angular - 缺少 npm 对等依赖项:@angular/core@^6.0.3,videogular2@6.4.0 需要 - 它在骗我
- java - 在scrollView中绘制画布线的问题