V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
52txr
V2EX  ›  云计算

真的有人在自己的博客网站实现了 CDN 鉴权吗?

  •  
  •   52txr · Nov 29, 2024 · 3477 views
    This topic created in 520 days ago, the information mentioned may be changed or developed.

    我看腾讯云 CDN 、阿里云 CDN ,都有 URL 访问鉴权。但是在我的服务端为 url 添加批量动态的鉴权参数没做出来。

    我的网站是 typecho 框架,服务器用宝塔管理。我尝试写一个 typecho 插件来拦截所有的请求并且改写满足条件的 url 。但是没成功。

    也尝试使用 php 生成鉴权参数 auth_key ,然后使用 nginx 来重写 url 。

    折腾了好几天都是以失败告终。有大佬来指导一下导致怎么实现吗?

    在你的服务端为链接添加与时间戳和路径相关的验证参数,客户端拿到有验证参数链接才能访问。

    开启本功能后,你需要在服务端为需要鉴权的 URL 添加鉴权参数 auth_key ,否则客户端将无法访问。

    这个 auth_key 的格式为:

    timestamp-rand-uid-md5hash

    其中的参数说明:

    参数 说明 timestamp 你希望这个链接失效的时间,Unix 时间戳。比如 2 小时之后的时间戳 rand 随机字符串,1~100 位,支持大小写字母和数字 uid 0 ,或者你网站的用户 Uid (类型为 Int ),这样就可以根据访问链接查找出具体用户 md5hash md5(path-timestamp-rand-uid-密钥) 的计算结果 计算 md5hash

    auth_key 的最后一部分是一个 MD5 值,他的计算格式为:

    md5(path-timestamp-rand-uid-key)

    其中:

    参数 说明 path 文件的 path 部分(不含问号及参数),例如 /test/example.jpg timestamp 、rand 、uid 同上表 key 你设置的鉴权密钥

    18 replies    2024-12-03 21:02:20 +08:00
    jwj
        1
    jwj  
       Nov 29, 2024
    验证来源域不就行了,这么麻烦干嘛
    javalaw2010
        2
    javalaw2010  
       Nov 29, 2024
    我不太理解这个做法,给博客的资源添加 CDN 鉴权的意义是?一般来讲,用户付费才能访问的资源才有必要使用这种功能。如果非要做的话有一个简单的办法,你博客的资源域名不用 CDN ,用自己博客的域名,然后 nginx 拦截指定后缀的文件请求转发到自己的一个后端服务,这个后端服务动态计算出带鉴权的 cdn 地址,然后返回一个 302 响应跳转过去。
    52txr
        3
    52txr  
    OP
       Nov 29, 2024
    @javalaw2010 大佬你好。我是在钻研怎么防止被盗刷 CDN 流量。感觉加鉴权参数是最靠谱的?前段时间 PCDN 使劲猛刷,设置了 QPS 或者流量封顶,即便关停也感觉很烦。来反复启动,启动了可能又被刷
    esee
        4
    esee  
       Nov 29, 2024
    @jwj 验证来源是防止盗链,不是为了防止刷流,加鉴权可以提高盗链和刷流的门槛,链接一定时间后就过期了得重新生成。
    realpg
        5
    realpg  
    PRO
       Nov 29, 2024
    A 方式和 F 方式都在用 阿里文档写的明确 ABC 方式还提供手动生成验证你的算法是不是正确

    这玩意没有任何防刷功能

    怕刷就不要上按量付费的任何功能
    52txr
        6
    52txr  
    OP
       Nov 29, 2024
    @realpg 哈哈,说的有道理的,裸奔直接打宕机,套 CDN 又被刷破产,太难了。我看 CDN 厂商说鉴权也是防护的一种,为什么没有任何防刷作用呢?
    cat
        7
    cat  
       Nov 29, 2024
    加 url 鉴权也能刷… 先请求一下你的页面 拿到最新的 url ,不就能刷了…
    chenxuuu
        8
    chenxuuu  
       Nov 29, 2024
    我博客上加了一层鉴权的,超时时间 15 秒
    这个很简单的,我用 openresty 写了个脚本来实现,自动鉴别机器人,如果无问题就给出带鉴权的链接
    fkdog
        9
    fkdog  
       Nov 29, 2024
    大炮打蚊子。。
    52txr
        10
    52txr  
    OP
       Nov 29, 2024
    @chenxuuu 大佬可以出一期教程让俺学习一下吗,或者说已经有写好的文章了?
    chenxuuu
        11
    chenxuuu  
       Nov 29, 2024
    @52txr #10 这个不太好公开,大致思路和 #2 类似,只不过我直接跑在 nginx 的 lua 脚本里了
    52txr
        12
    52txr  
    OP
       Nov 29, 2024
    @chenxuuu 好的,谢谢了
    javalaw2010
        13
    javalaw2010  
       Nov 29, 2024
    针对 pcdn 刷流量的话,单 ip 的 QPS/流量封顶已经够用了吧,再不济加一个防盗链,这帮人的目的是刷流量不是破解你的站点,稍微带点防护他们就会转刷别的站点了,不会跟你玩猫捉老鼠的游戏的。我们之前也被刷过一次,我的解决方案很简单粗暴,拉 CDN 日志找 IP ,直接加黑名单,过两天对方发现了就停了刷流量的脚本也没再来。
    52txr
        14
    52txr  
    OP
       Nov 29, 2024
    @javalaw2010 其实也有那种暴力 ddos 的,之前被蓝易云 CDN 厂商也干了一炮。就是那种无脑攻击。好像 tg 里面还有神蛆群?
    mark2025
        15
    mark2025  
       Nov 29, 2024
    @javalaw2010 既然是 major 版本 4 -> 5 ,就说明有破坏性变更。升级之前就需要去看它 changelog 日志啊
    mark2025
        16
    mark2025  
       Nov 29, 2024
    @javalaw2010 不好意思,回错帖了
    humbass
        17
    humbass  
       Dec 3, 2024
    怕刷就要求登录,不需要登录的都可以刷。
    55wHD3PbDHiewGz1
        18
    55wHD3PbDHiewGz1  
       Dec 3, 2024
    我这两天刚好给我的博客加了 CDN 访问鉴权,所有的上传内容(如图片、附件)在渲染前使用正则表达式提取出来,签名后再返回给前端,如有兴趣可以交流下~
    邮箱:b3JlbnpoYW5nQG92aW5jLmNu
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2567 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 62ms · UTC 14:46 · PVG 22:46 · LAX 07:46 · JFK 10:46
    ♥ Do have faith in what you're doing.