很多站长都会给自己的网站使用CDN/云存储技术,从而实现动静分离,花不了多少钱却又可以享受全球加速服务,简直美滋滋。但是问题也很明显,就是万一被人盗刷流量,那么过一晚上第二天早上起床你就发现房子归服务器供应商(点名腾讯)了。
下面是友链某位朋友的遭遇。[1]
那么有没有办法规避呢?答案是有的!下面我将为大家提供一些我的思路。
一、开启鉴权
1.referer验证
这个是最简单也是很多站长普遍在用的方法了,可以防止一些基础的盗链、刷量。
1.何为referer?
Referer是一个HTTP请求头部字段,用于指示当前请求是从哪个页面链接跳转过来的。它记录了发出请求的页面的URL,作为请求的来源。
TA的主要作用是帮助网站分析和统计访问来源,以及实现防盗链。网站管理员可以根据Referer字段来判断请求的来源,从而对来自不同来源的请求采取不同的处理方式。
比如下图就是“Wp Statistics”通过referer来统计的部分来源信息。图示有130名访客通过PC百度搜索引擎到访本站,30名访客通过移动端百度来到本站,而36名访客通过谷歌搜索来到本站。
2.何为盗链?
盗链(hotlinking)是一种将别人的内容嵌入到自己的网站或博客中,却不经过原始内容的所有者获得允许的极其恶劣行为。通常指的是将图片、视频和音频等较大媒体文件链接到自己网站上,费用由原始内容的所有者承担,而盗链者不承担任何费用,属于是赔了夫人又折兵。
这里点名cnblog某博主盗用本站cur鼠标样式文件几个月之久!也许你只是抄代码把我网站内容一起搬过去了,这我不反对毕竟我也经常面向CSDN编程(,感谢你对本人眼光的认可,但是烦请下次做好本地化。
3.如何通过referer设置防盗链?
通常来说,你所使用的CDN服务商都会有这个服务,只需开启即可,这里以腾讯云为例。
需要注意的是:
1、以本站为例,“*.zyq.today”并不包含“zyq.today”,需要分别设置。
2、开启防盗链后如出现资源无法加载情况(一般Ctrl+F5刷新就行了,但是访问者可能不了解这些从而以为网站出问题了)需要勾选“允许空referer访问”,即允许浏览器直接访问你的资源,这在一定程度上增加了被刷的风险。
3、仅能对网站静态资源域名(比如本站img.zyq.today)开启referer防盗链,如果对主域名开启会造成用户无法直接在浏览器打开网站或者无法从他人网站(比如友链)跳转到你的网站。
4、如果你的网站没做动静分离,但是需要对部分资源比如图片等开启部分防盗链,请继续阅读。
4.欺骗性。
由于Referer字段可以被篡改,所以不能完全信任Referer,它只是作为一种参考信息。有些浏览器或者软件也提供了禁用或修改Referer的选项,用户可以自由设置Referer的内容,这意味着稍微高级一些的破坏者仍然可以爆刷你的CDN流量。
2.回源鉴权
需要准备的知识储备:API网关/云函数有手就行
原文[2]作者已经两年不更新了,有很多失效过时的信息,这里将按照我自己折腾时的理解、方便大家阅读的方式重写原文。
1.在腾讯云CDN后台开启鉴权功能
配置和我一样就行。
2.创建云函数
https://console.cloud.tencent.com/tcb/env/index?rid=4
https://console.cloud.tencent.com/scf/list?rid=1
按照下图配置,没有说明的地方请保持默认
操作完成后将显示下方页面,稍等或点击“立即前往”
点击“编辑”
向下拉,找到“环境变量”,如图配置,保存。
3.开启以及配置API网关
https://console.cloud.tencent.com/apigateway/service
路径填写:/sign/
下一步——完成,不用任何配置,发布即可。
4.控制访问
打开API网关,新建插件
https://console.cloud.tencent.com/apigateway/plugin-create?rid=1
回到https://console.cloud.tencent.com/apigateway/service?rid=1
参考如下动图绑定插件
5.价格预算
访问量不大的情况下仅需支付20/月的云函数费用即可。
6.添加解析
添加鉴权域名解析
https://console.cloud.tencent.com/apigateway/service?rid=1
解析记录值为“公网二级域名”
等待解析生效后才能提交。
7.更换路径
开启鉴权之后原来的所有资源路径都要改为鉴权路径,否则无法访问。
以我为例:img.zyq.today -> sign.zyq.today/sign
批量替换路径的方法之一是利用插件来实现,这面推荐一个插件叫做“Hide My WP”
安装后点击“映射”——“网址映射”添加要替换的路径即可。
插件的使用需要配置并重启NGINX,这里不过多赘述,有需要的可以留言考虑以后出一篇文章。
二、EdgeOne
是不是觉得上面的方法太繁琐了?反正我是这么觉得。正好腾讯云最近新出了个EdgeOne,我认为完全可以替换掉上面的回源鉴权方案。
https://console.cloud.tencent.com/edgeone
正好现在新手活动便宜,续费也不贵(¥9.9/月),何乐不为呢?
优惠领取页面https://cloud.tencent.com/act/pro/edgeone_new
用法过于白给,这里不讲了,简单说下我踩过的坑吧(反馈了无数BUG)。
1.尽量使用CNAME接入
不要NS,有BUG,别问为什么,信我的。
2.存储桶授权报错问题。
临时解决方法
但是仍然会遇到这个问题
在这之前遇到这个感叹号,EO是不能用的,不过现在应该修复了
对此,
3.防盗链配置在这里
不过注意,现在个人版还不能允许空referer(标准版可以),腾讯云表示在优化了。
不能设置空referer的后果就是正常用户访问网站是有概率出现【responded with a status of 567 ()】报错,567的意思和CDN的514一个含义,都是触发了防盗链规则,其实这时候用户刷新一下网页多数时候就解决了,但是普通用户只会以为网站出了问题。
4.图片处理
这个就相当于CDN里面的图片优化,但是有个地方要注意。就是EO中如果源文件处理失败不会返回原图,需要在这部分处理失败的图片后面加上【/ignore-error/1】参数。
例如
原图(可以访问):https://img.zyq.today/files/2023/08/Video_2023-08-06_155219.gif
处理后的图片(无法访问,提示gif 的分辨率过高或者帧数太多):https://img.zyq.today/files/2023/08/Video_2023-08-06_155219.gif?imageMogr2/format/webp/interlace/1/quality/100
加了参数的图片(返回原图,可以访问):https://img.zyq.today/files/2023/08/Video_2023-08-06_155219.gif?imageMogr2/format/webp/interlace/1/quality/100/ignore-error/1
5.其他需要注意的
目前个人版的EO还不能完全代替SCDN来防御攻击,被攻击仍然可能造成高额账单,请悉知!
我建议仅目前和腾讯云的存储桶耦合较深的用户使用EO,且不建议主页使用EO来代替CDN。
防止高额账单可以考虑多吉云,节点还有控制台都和腾讯云完全一样,账单延迟低而且价格还便宜。
本来没想着挂链接的(因为目前也没在用),但是刚刚看到可以推广反余额的活动了,所以看在我码这么多字的份上能点下我的链接注册么(
https://www.dogecloud.com/?iuid=6724
官网邀请链接,注册前可以先了解下多吉云。
https://console.dogecloud.com/register.html?iuid=6724
直接注册的邀请链接。
三、上高防SCDN
这是我目前使用的策略了,简单粗暴。
我现在使用的是酷盾赞助的SCDN,效果如何我还在进行测试,如果可以的话未来从各种维度专门写一篇文章推荐给大家!
就算是推广我也会坚持产品质量为底线,绝对不会推荐非优质品或者睁眼说瞎话。
每个月多掏点钱也好于被打一次欠费几千,我是这样想的。就算酷老板不赞助我也会另购SCDN的~
文章写完啦!点击下方链接浏览~
四、多做事,少张扬
其实一般情况下,如果你不去群里求锤是很安全的,但是很多站长都有M心理,总是想看看自己网站防御怎么样,当然也有的是为了蹭个IP之类的——通常在群名片没有规定的情况下使用网站作为自己的群昵称、写新文章就批量转发各个群、更有甚者天天吹自己抗住多少多少CC有能耐打死我之类的话,这种纯属M属性爆发,求锤得锤。最后被锤了还能水篇文章,打死了就说群友是黑产、老鼠屎巴拉巴拉,没打死就一顿嘚瑟,显得自己很NB,殊不知自己才是口中那颗最臭的老鼠屎。CDN又不是你家的,钱也不是你掏的真不明白你有什么NB的地方。
只能说人的眼界很重要,一个人永远也赚不到认知以外的钱。
腾讯云被刷5000块的朋友来了,教程非常棒,个人站长建议学习一下,我的博客部分图片资源已经放到微云上面了
还有我在阿里云解析上面做了限制,因为看博客的大部分是国内的,所以我干脆把非中国大陆区的解析全改成了127.0.0.1了,能避免恶意的境外流量,但是也拦截了中国港澳台地区了。还有最后说的是不是名称是四字的博主呀
《 那 四 个 字 》
所以今天又研究了一晚上,发现还是不能完全规避被刷风险。果然折腾的尽头是放弃存储桶
我懒得折腾了,图片都放微云去了,虽然上传、获取链接有点麻烦,但是起码支持外链,不过坏处是好像只能搞静态的图片,随缘吧,但是dns解析我还是建议分线路解析,或者跟我一样干脆点,直接禁中国港澳台和海外
我主要是静态资源(图片)的问题,都在存储桶,万一被刷风险还是挺大的。至于其他资源都是人家KDUN赞助的不限SCDN流量随便他们怎么刷(所以我在想把图片资源也放到服务器经过KD的SCDN就没有风险了)。
博主你好,EdgeOne个人版有没有流量预警功能,我看特权对比好像只有标准版有?那还是比较危险的 。另外,小白请教一下只用对象存储做图床使用,开启referer是不是比较安全了?🤐
没有预警功能,而且其他功能也有很大限制,至于referer,开了只能保证一定程度上不被盗链,想刷还是可以做到的,文章中有写~
阿里云企业邮好像也不会泄露服务器IP吧
是的,有很多不会泄露ip的方案,具体可以试着给自己发一封然后查看邮件源代码。
好文章,很详细
感谢认可!
无所谓,非盈利个人网站我直接摆烂,裸奔也是个选择,只要不产生经济损失就好,远离那些所谓站长QQ群,能减少99%被攻击的可能性。
正确的、中肯的、一语中的的。其实很多人被打都是自己去群里吹水导致的,又不是什么盈利网站人家真没必要打你。
很多人套CDN都是看价格不贵又能加速访问才开始的,其实忽略了很多潜在风险。
一般攻击流量大都来自境外
,如果实在想开启境外可以交给cf 
确实是个很好的思路,dns分线路解析,境外的交给cf。我另外一个站就是这么做的
而且好多个人博客会用腾讯,微软之类的邮箱/企业邮箱服务发信
,什么评论通知和注册邮件之类的。这些服务调用是会显示服务器的调用IP的,上来源站就被打掉惹
。只有阿里云邮,Gmail企业邮还有一些会自动替换成服务商IP 
考虑到这点了,所以我现在用的发信服务是腾讯云的,不会泄露服务器IP,以后还准备写篇文章讲讲反查IP的几个方法
哈哈雀食,我看腾讯的免费额度是1000封,不知道是月度的还是总的
。我用的是阿里云邮,好像是明天两百封免费额度 
腾讯是账号总量1000封,但是可以按量计费,阿里是每天200封,但是超过了必须购买套餐包不能按量付费,而且最便宜的好像一年差不多100块几万封,同等数量的邮件腾讯按量计费的价格和阿里的套餐几乎一样。所以长期来看还是腾讯的好一些,除非能保证将来每天邮件都不会超过200,那就可以一直白嫖阿里的。
可恶啊可恶,我刚刚特意去看了,阿里云下个月要取消这个服务了,改为和腾讯云一样了,总免费额度为2000(关于按量计费,我去看了阿里云的文档,文档里说按量计费是默认的,开通邮件推送就默认按照按量计费–如果没有资源包,价格为2R/1000封,腾讯云的价格为1.9R/1000封,总免费额度1000)
那就是阿里最近改了规则然后出了按量计费,不过这样看来还是腾讯便宜一些
沃日 阿里最终还是对这个产品下手了
~不能白嫖了(
想起了某个用CF的站长说抗住了多少攻击😅
卧槽你这头像,,,PTSD了