CDN盗刷场景解决方案推荐

更新时间:
复制为 MD 格式

场景说明

本文中的场景术语含义如下:

  • H5:通过浏览器进行访问的网页形式。

  • APP:移动端安装的应用。

  • 客户端程序:在电脑上安装的客户端程序。

  • 小程序:一般指使用支付宝小程序、微信小程序、微信公众号等第三方集成的内嵌场景。

纯网页场景

当您的业务为 PC 端或移动端纯网页场景时,若异常访问中存在大量空 Referer 的异常请求,可能存在以下特征:

  • 主页请求为正常业务逻辑,空 Referer 请求主要来源于非主页请求。

  • 空 Referer 请求绝大部分由访问主页产生,可能存在主页盗刷情况。

由于首页请求无论是正常用户还是恶意访问都不会携带 Referer,CDN 无法有效精细区分并拦截,建议转用边缘安全加速 ESA进行防护。

H5、APP、客户端程序场景

APP/客户端程序不像浏览器存在引用逻辑,发起请求一般为直接构造,因此通常不包含 Referer(非绝对)。当业务场景符合该情况时,若直接通过 Referer 防盗链封禁所有空 Referer 请求,可能影响正常业务访问,需在限定条件后再配置。

解决方案:明确 APP、客户端程序在构造请求时除 Referer 外的特征,例如使用较特殊的 UA(相对于浏览器 UA)。以下以客户端程序 UA 为java-1.1为例。

  1. 配置规则引擎,将 APP、客户端程序使用的 UA 与其他 UA 区分开。

    image

  2. 配置 Referer 防盗链白名单,针对网页访问限制为仅允许指定的 Referer 访问。

    image

H5、小程序、APP、客户端场景

此场景与“小程序+APP”类似:先排除小程序和 APP 的请求,再对剩余访问设置允许的 Referer。

  1. 配置规则引擎,将 APP、客户端程序、小程序使用的 UA 与其他 UA 区分开。此处以支付宝小程序和java-1.1为例。

    image

  2. 配置 Referer 防盗链白名单,针对访问限制为仅允许指定的 Referer 访问。

    image

APP、客户端场景

纯 APP、客户端程序场景下,若程序本身的 UA 访问频繁,需排查程序本身是否存在问题。因此当对应访问的 UA 并非程序 UA 时,解决方案与H5、APP、客户端程序场景一致。

  1. 配置规则引擎,将 APP、客户端程序使用的 UA 与其他 UA 区分开。

    image

  2. 配置 Referer 防盗链白名单,针对访问限制为仅允许指定的 Referer 访问。由于没有实际 Referer,可自行编造一个不存在的 Referer 作为白名单,对全局进行限制。

    image

小程序、APP、客户端场景

小程序的 UA 较固定,但不同厂商的小程序有所不同,常见如下:

  • 微信小程序:UA 中关键标识为MicroMessenger/x.x.x

  • 支付宝小程序:UA 中关键标识为AlipayClient/x.x.x+ Nebula

  • 百度小程序:UA 中关键标识为BaiduApp/x.x.xswan

  • 字节(抖音):UA 中关键标识为BytedanceWebview/ Douyin

配置时需先确认自身业务主要使用哪类小程序,再进行相应配置。解决方案同样通过规则引擎进行匹配。

  1. 配置规则引擎,将 APP、客户端程序、小程序使用的 UA 与其他 UA 区分开。此处以支付宝小程序和java-1.1为例。

    image

  2. 配置 Referer 防盗链白名单,针对访问限制为仅允许指定的 Referer 访问。由于小程序和 APP 一般无实际 Referer,可自行编造一个不存在的 Referer 作为白名单进行全局限制。

    image

大文件传输场景

大文件传输通常具有传输耗时长、请求频率低、缺乏明显访问特征等特点,较难防护。因此在大文件被访问时,即使访问频率不高,消耗的流量也可能较大。

解决方案一:单请求限速

配置单请求限速,用于限制非 APP/小程序等客户端的请求。

  1. 配置规则引擎,用于识别客户端特征。一般建议根据客户端 UA 识别,此处以支付宝小程序和java-1.1的 APP 为例。

    image

  2. 设置单请求限速,并关联上述规则。

    image

解决方案二:鉴权防护

若服务端可做改造并增加鉴权,可更有效地在不限制用户下载速度的前提下做好防护。分为 URL 鉴权和远程鉴权两种方式。

URL 鉴权

此方案需先在服务器侧对大文件 URL 进行改造,使用 CDN 的鉴权逻辑生成临时链接。鉴权逻辑请参见:鉴权方式A说明。服务端完成改造后,再在 CDN 控制台配置对应的鉴权。

image

远程鉴权

此方案无需对访问链接进行改造,只需在服务端增加一台用于鉴权的服务器,通过识别客户端特征信息判断是否合法。

  1. 配置一台远程鉴权服务器,鉴权逻辑需您自行设计。一般建议可按单客户端访问次数控制,例如对每个客户端 IP 进行 24 小时计数,若计数值超过阈值则拒绝访问。

  2. 在 CDN 控制台配置对应的鉴权服务器地址,并将客户端 IP 及您需要的客户端信息通过参数传递给鉴权服务器。

    image

纯接口高频访问场景

接口类请求通常具有频率高、流量小的特点。接口的高频访问产生的费用集中在请求数而非流量。在目前主要以 HTTPS 传输的条件下,CDN 无论如何拦截都会产生 HTTPS 请求数,因此无法在此层面有效防护,建议转用 ESA 进行防护。ESA 无请求数计费项,更适合此类场景。