V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
52txr
V2EX  ›  云计算

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

  •  
  •   52txr · 13 天前 · 2027 次点击

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

    这玩意没有任何防刷功能

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