用 Amazon S3 和 Cloudfront 做防盗链
前言,因为一个网站上面的部分静态图片当时放在了 aws 的 S3 上面,后来陆续发现有信用卡扣款,查看了 aws 的账单发现,属于S3 和 Cloudfront 的流量导致。
因为之前没有设置访问权限,也就意味着图片链接被人拿走在任意网站或者其他地方随处访问,总所周知 aws 的速度很快,所以导致流失流量也比较快。
所以就相当了采用防盗链来防止资源外链,这里顺便说一下,S3 防盗链设置不同于国内比如说阿里云的 os ,以及七牛等类似的对象存储,因为国内都是直接可以采用选项来设置的,就是说很非常简单方便,但是 S3 不同,他需要自己编写存储桶策略来编写。
还有顺便提下,全球大部分做云计算的基本都是抄袭 aws ,包括功能啊,文档啊等,这也就是为什么 aws 目前是全球云计算份额最大的企业了。
设置参考网站:https://s3browser.com/working-with-amazon-s3-bucket-policies.php
阅读了部分 aws 的部分策略文档,真心感叹强大。
接下来开始设置:
进入存储桶,然后先选择‘阻止公共访问权限’至右边的编辑将阻止全部公共访问权限打开勾选。
然后选择选择存储桶策略填入以下内容:
{
"Version": "2012-10-17",
"Id": "PreventHotLinking",
"Statement": [
{
"Sid": "Allow get requests originated from www.xx.com xx.com www.cc.com and cc.com",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::buckets/*",
"Condition": {
"StringLike": {
"aws:Referer": [
"http://www.xx.com/*",
"http://xx.com/*",
"https://www.xx.com/*",
"https://xx.com/*",
"http://www.cc.com/*",
"http://cc.com/*",
"https://www.cc.com/*",
"https://cc.com/*"
]
}
}
}
]
}
官方只给出了不带 https 的配额范例,我想着因为我的站点全部都带 https,于是我就多加了几个域名在里面。
然后在进行资源测试访问,访问过的因为带缓存,所以请清除缓存测试。
资源链接打开会出现以下错误:
以上是一个简单的防盗链策略设置。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix