本文介绍了一款名为URLAuth的Typecho插件,旨在通过URL鉴权技术有效防止CDN资源被盗刷。URL鉴权通过在URL中嵌入时间戳、签名等验证信息,确保只有经过授权的用户才能访问特定资源,从而提升网站安全性。该插件支持多吉云、腾讯云、阿里云等主流CDN服务商,适用于保护静态资源(如图片、CSS、JS文件)免受恶意访问。
URL鉴权是指网站对用户输入的URL地址进行权限检查的过程,以确保只有经过授权的用户才能访问特定的资源。这一机制通过嵌入在URL中的验证信息(如时间戳、签名、用户ID等)来验证用户的身份和访问权限,从而防止非法用户通过恶意URL访问网站。
由于Referer内容可以伪造,所以Referer防盗链方式无法彻底保护站点资源。因此,可以采用URL鉴权方式保护源站资源更为安全有效。根据时间戳进行鉴权参数的生成,过了时间这个链接就会失效,这一点也是相对QPS、防盗链、禁IP和UA等更加牛逼的地方。
注意事项:
(1)千万不要对源码进行任何修改,因为可能会发生很严重的后果,甚至导致需要回滚服务器。小陶自己已经回滚了好几次服务器,最后决定把源码进行混淆,防止用户进行修改导致严重bug。目前可以对源码放心,不会有任何危害。
(2)需要自己先了解一下什么是URL鉴权。不然可能导致自己的网站访问都是403
(3)插件最初是根据多吉云进行设计的,但是Type A是一种通用的鉴权技术,可以在阿里云、腾讯云等通用。
(4)过期时间极限是设置1秒,但是不建议。建议设置10秒~1200秒这样。毕竟有时候网页卡了自己打开都要好几秒。网站资源被刷可以设置到3秒、5秒的。可以自己去尝试设置。
(5)建议和流量封顶、QPS、防盗链等等配合使用!防护的效果会更好!
开发耗费了很多的精力以及冒了很多的险,掉了很多头发。希望大佬可以请小陶喝一杯瑞幸!一杯咖啡的价格,可以让自己的CDN很大程度上避免被刷还是很划算的!
本文就以多吉云CDN为例(腾讯云、阿里云都是差不多的)来介绍一下如何配置插件,因为我看Typecho圈子里大家用的多吉云还是蛮多的。多吉云融合CDN,免费境内融合CDN加速、图片储存等,月免费流量20GB,免费有效请求次数200w次,博客站个人站点加速必备。欢迎大家使用!
《点击注册多吉云》
关于如何配置多吉云CDN的教程网上有很多,多吉云的帮助文档也有细节说明。本文就不再赘述。
配置好之后到"访问控制"中,开启URL鉴权:
然后填写配置参数:
(a)、打开URL鉴权;
(b)、随机生成密钥(密钥需要牢记,建议定期更换一个);
(c)、鉴权范围输入文件名后缀,一般是对静态资源进行鉴权防止盗刷。
提供参考:.webp;.png;.jpg;.jpeg;.css;.js
然后启动URLAuth插件进行配置:
1、登录 边缘安全加速平台 EO 控制台,在左侧菜单栏中,单击站点列表,在站点列表内单击需配置的站点。
2、在站点详情页面,单击站点加速,进入站点全局配置页面,单击规则引擎 Tab 页。
3、在规则引擎页面,单击创建规则,选择新增空白规则。
4、在规则编辑页面,设置触发该规则的匹配条件。
5、单击操作 > 选择框,在弹出的操作列表内,选择操作为Token 鉴权,参数配置说明如下:
EdgeOne 提供了 Token 鉴权 URL 的生成工具和校验工具,开发者可以使用该工具快速准确地生成和校验符合要求的防盗链 URL。
阿里云和多吉云都是auth_key,腾讯云的EgdeOne和CDN好像是sign来着,也可以自定义为auth_key
。根据自己的需求配置即可。
只有正确的鉴权参数才能访问,直接访问或者鉴权参数不正确的话,则会返回403,并且不计入多吉云的HTTPS请求中。
其实我对URL鉴权进行了很长时间的摸索,第一次了解的时候还是【冷寂】整了个天御云高防CDN。
后来我找了很多教程,也在V2EX上进行咨询,但是并没有真正有感兴趣的大佬来做这件事。
后来我写了一个HTML压缩插件LightHTML(见文《写了一个适用于Typecho的HTML压缩插件:简单压缩模式和完全压缩模式》),在这个基础上,继续去探索如何进行URL鉴权。在前段时间被老鼠屎疯狂恶心的攻击下,终于写出了一个URL鉴权插件,用于CDN防止被盗刷。
所谓URL鉴权,就是给访问图片等静态资源必须要加上auth_key参数,不然就是禁止访问,参数是根据“当前时间戳+保质期时间+密钥+文件路径”加密形成的。我现在设置2分钟的保质期。简单来说就是每次访问都是根据当前的时间+加密规则生成一个带参数的url,这个url过两分钟就失效了不存在。