IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Typecho插件URLAuth: 进行CDN URL鉴权防盗刷,支持多吉云、腾讯云、阿里云等

    52txr发表于 2025-01-03 12:21:00
    love 0

    本文介绍了一款名为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鉴权:

    开启URL鉴权

    然后填写配置参数:

    (a)、打开URL鉴权;

    (b)、随机生成密钥(密钥需要牢记,建议定期更换一个);

    (c)、鉴权范围输入文件名后缀,一般是对静态资源进行鉴权防止盗刷。

    提供参考:.webp;.png;.jpg;.jpeg;.css;.js

    配置鉴权参数

    然后启动URLAuth插件进行配置:

    配置插件

    腾讯云EdgeOne的鉴权配置

    1、登录 边缘安全加速平台 EO 控制台,在左侧菜单栏中,单击站点列表,在站点列表内单击需配置的站点。

    2、在站点详情页面,单击站点加速,进入站点全局配置页面,单击规则引擎 Tab 页。

    3、在规则引擎页面,单击创建规则,选择新增空白规则。

    4、在规则编辑页面,设置触发该规则的匹配条件。

    5、单击操作 > 选择框,在弹出的操作列表内,选择操作为Token 鉴权,参数配置说明如下:

    EdgeOne 提供了 Token 鉴权 URL 的生成工具和校验工具,开发者可以使用该工具快速准确地生成和校验符合要求的防盗链 URL。

    阿里云和多吉云都是auth_key,腾讯云的EgdeOne和CDN好像是sign来着,也可以自定义为auth_key。根据自己的需求配置即可。

    EdgeOne配置鉴权参数

    鉴权效果

    只有正确的鉴权参数才能访问,直接访问或者鉴权参数不正确的话,则会返回403,并且不计入多吉云的HTTPS请求中。

    鉴权的效果

    探索经历

    其实我对URL鉴权进行了很长时间的摸索,第一次了解的时候还是【冷寂】整了个天御云高防CDN。

    后来我找了很多教程,也在V2EX上进行咨询,但是并没有真正有感兴趣的大佬来做这件事。

    后来我写了一个HTML压缩插件LightHTML(见文《写了一个适用于Typecho的HTML压缩插件:简单压缩模式和完全压缩模式》),在这个基础上,继续去探索如何进行URL鉴权。在前段时间被老鼠屎疯狂恶心的攻击下,终于写出了一个URL鉴权插件,用于CDN防止被盗刷。

    在V2EX中无人问津

    所谓URL鉴权,就是给访问图片等静态资源必须要加上auth_key参数,不然就是禁止访问,参数是根据“当前时间戳+保质期时间+密钥+文件路径”加密形成的。我现在设置2分钟的保质期。简单来说就是每次访问都是根据当前的时间+加密规则生成一个带参数的url,这个url过两分钟就失效了不存在。



沪ICP备19023445号-2号
友情链接