当您的域名有非业务性流量突增时,您可以通过配置合适的ESA安全防护策略对异常的访问和攻击进行拦截。本文档将针对可能出现的异常访问特征为您推荐合适的防护策略。
及时止损
当您的站点因被恶意攻击或恶意盗刷产生了大量的异常流量,建议您根据业务场景选择以下方式及时介入,以减少进一步损失。
开启一键防盗刷:站点管理 > 安全防护 > WAF > 概述 > 防盗刷

安全级别调整到我正在遭受攻击:站点管理 > 安全防护 > 设置 > 安全级别

智能限频调整为严格:站点管理 > 安全防护 > WAF > 概述 > 智能限频

以上防护方式有可能拦截正常的业务访问,适用于止损场景,长期防护方案建议您有针对性的配置防护策略。
如何识别异常访问特征
定位流量/访问量异常的时间区间。
针对异常时间区间的数据进行分析。
方法一:通过ESA控制台 > 流量分析,根据数据信息识别异常访问,比如断层式流量占比、聚集性访问特征。

方法二:通过实时日志/离线日志统计分析。
您可以下载日志后,统计客户端ip、referer、User-Agent、URL的频次和流量情况。离线日志字段含义说明
日志统计脚本参考
创建脚本:
nano log_stats.sh复制以下脚本内容并保存:
#!/usr/bin/env bash
# 日志统计脚本 (macOS/Linux 通用)
# 依赖: jq + awk
# 用法: ./log_multi_stats.sh <文件路径> [TopN]
# 示例:./log_multi_stats.sh /path/to/log.txt 10
# ==============================================
FILE="$1"
TOP_N="${2:-10}"
if [[ -z "$FILE" ]]; then
echo "用法: $0 <文件路径> [TopN]" >&2
exit 1
fi
# 检查依赖
if ! command -v jq >/dev/null; then
echo "[错误] 需要安装 jq" >&2
exit 1
fi
# 统计函数 - 频次
stat_count() {
local field="$1"
echo "=== ${field} 频次 TOP${TOP_N} ==="
jq -r --arg f "$field" '.[$f]' "$FILE" \
| sort \
| uniq -c \
| sort -nr \
| head -"$TOP_N" \
| awk '{print $2, $1}'
echo
}
# 统计函数 - 流量
stat_sum() {
local field="$1"
echo "=== ${field} 对应 EdgeResponseBytes 总和 TOP${TOP_N} ==="
jq -r --arg f "$field" '.[$f] + " " + (.EdgeResponseBytes|tostring)' "$FILE" \
| awk '{sum[$1] += $2} END {for (k in sum) printf "%s %d\n", k, sum[k]}' \
| sort -k2,2nr \
| head -"$TOP_N"
echo
}
# 要统计的字段列表
FIELDS=(
"ClientIP"
"ClientRequestReferer"
"ClientRequestURI"
"ClientRequestUserAgent"
)
# 循环统计
for f in "${FIELDS[@]}"; do
stat_count "$f"
stat_sum "$f"
done保存脚本操作:
按
Control + O保存按
Enter确认文件名按
Control + X退出 nano
赋予脚本执行权限:
chmod +x log_stats.sh运行脚本,以统计/path/to/log.txt 日志文件中客户端ip、referer、User-Agent、URL频次和流量top5信息为例:
./log_stats.sh /path/to/log.txt 5输出示例:

常见的异常访问特征
客户端ip/ip段相对集中的高频次访问的恶意请求
单ip/ip段封禁(适合少量聚集性IP/IP段封禁需求)
登录ESA控制台。
在站点管理页面找到目标站点,查看站点详情。
在左侧菜单栏,选择安全防护 > WAF > IP访问规则,输入目标IP/IP段,执行动作拦截,添加规则。

批量IP/IP段封禁(适合大量IP/IP段封禁需求)
登录ESA控制台。
在左侧菜单栏,选择全局配置 > 分组 > 新建分组,选择IP/网段类型,输入您需要封禁的IP/IP段,确定保存分组。

在左侧菜单栏,选择站点管理,单击目标站点详情。
在左侧菜单栏,选择安全防护 > WAF > 自定义规则,选择客户端ip匹配在分组中,执行动作拦截,即可实现批量拦截。

区域性IP封禁(适合区域性聚集异常访问防护)
若您查看流量分析中,IP/IP段不聚集,但异常访问客户端归属的国家/地区或中国内地省份比较聚集,您可以通过区域ip封禁来防护恶意请求。

登录ESA控制台。
在左侧菜单栏,选择站点管理,单击目标站点详情。
在左侧菜单栏,选择安全防护 > WAF > 自定义规则,选择国家/地区、省份 > 等于其中任意一个,执行动作拦截。

由于IP库的固有特性,可能存在预期外的拦截和放行,您可以结合IP访问规则中的黑、白名单功能完善您的防护策略。
设置区域封禁前,请您一定确认区域封禁需求,误配置可能会对您的正常业务造成影响。
referer集中的盗刷场景
纯网页空referer盗刷
当您的业务为纯网页业务时,若您存在大量的非主页空referer的异常请求,建议您配置除主页外的referer防护策略。
登录ESA控制台,在左侧菜单栏,选择站点管理,单击目标站点详情。
在左侧导航栏,选择安全防护 > WAF,单击自定义规则页签。
填写规则名称,配置非主页禁止空referer访问规则。在如果请求匹配以下规则...区域设置要匹配的用户请求特征,请求匹配规则参见规则表达式的组成。

如果您需要更为宽松的防护策略,您可以在执行动作中选择JS挑战或滑块挑战。
如您空referer请求大部分来源于主页,且远超正常业务量,可能存在主页盗刷情况。首页访问一般不包含referer,不好区分真实请求和异常请求,因此时常成为恶意访问的目标。如果只需要针对首页做限制,可单独针对首页进行JS挑战,或者对全局配置js挑战。
js挑战对接口类的请求、图片视频类请求的兼容性不好,建议只针对加载页面场景时使用。纯资源类的域名,一般包含referer,可设置referer的条件后进行额外拦截限制。
如除主页外需要部分URL可以直接请求,您可以结合WAF > 白名单功能,对于特定URL空referer访问放行。
登录ESA控制台,在左侧菜单栏,选择站点管理,单击目标站点详情。
在左侧导航栏,选择安全防护 > WAF,单击白名单页签,新增规则。
填写规则名称,配置特定URI允许空referer访问。在如果请求匹配以下规则...区域设置要匹配的uri请求特征,请求匹配规则参见规则表达式的组成。

业务包含H5、小程序和APP或者客户端程序的场景解决方案
由于APP/客户端程序不像浏览器存在引用的逻辑,发起请求一般都是直接构造,因此天然不包含referer(不绝对),因此当业务场景包含APP或者客户端程序时,referer防盗链无法直接设置,需要限定条件后才能配置,避免影响正常用户。
小程序常见UA(由于UA可以被伪造,以下提供的UA标识仅供参考):
平台 | UA 中关键标识 |
微信小程序 |
|
支付宝小程序 |
|
百度小程序 |
|
字节(抖音) |
|
这里以java-1.1的UA作为APP/客户端程序的标识,提供一个包含程序、支付宝小程序、以及H5的防护配置方案。
表达式:(not lower(http.user_agent) contains "alipayclient" and not lower(http.user_agent) contains "java-1.1") or (not lower(http.user_agent) contains "alipayclient" and not lower(http.user_agent) contains "java-1.1")
此方案的逻辑为:当用户请求的ua不是特定的APP程序、不是指定的小程序时,整个页面站点都执行JS挑战。
其中的条件部分,可根据实际业务场景,灵活替换。
如果您需要更有针对性地对网页/小程序业务进行防护,为您提供Bots高级防护方案(企业版)。通过高级模式,您可以为站点配置针对特定请求的防护规则集,并对不同的防护行为单独设置生效时间。高级模式还支持防护移动应用,也可以将规则集跨域配置到您账户下的其他站点中。
在ESA控制台,选择站点管理,在站点列单击目标站点。
在左侧导航栏,选择安全防护 > Bots。
在Bots页面,选择高级模式,单击创建规则集。
如您需要的对app业务进行防护,防护目标类型选择APP。
根据您需要过滤的请求条件在如果请求匹配以下规则...中配置规则表达式。
例如您可以对app业务中被异常访问的URL进行Bot特征识别和Bot限速,更多Bot防护方法您可以参考Bots快速上手。

空referer高频接口请求的解决方案
当您发现接口请求的频率不太正常,导致源站经常处理不过来最终异常,可使用ESA的频次控制能力,限制单个IP调用接口的次数。
聚集性UA高频次访问
除ip/referer特征外,如果您的异常流量产生伴随着User-Agent聚集性异常访问,您也可以针对异常User-Agent请求进行防护。
登录ESA控制台。
在左侧菜单栏,选择站点管理,单击目标站点详情。
在左侧菜单栏,选择安全防护 > WAF > 自定义规则。
配置User-Agent规则:
输入规则名称
在如果请求匹配以下规则...位置配置规则:
当异常UA可判断,比如大量携带"spider"的异常请求访问,您可以拦截包含"spider"的User-Agent访问您的站点,配置User Agent包含 spider,执行动作拦截/挑战。

如占比较大的UA看起来无明显异常,比如正常的浏览器访问,建议您挑战此UA访问,比如占比最大的UA为标准ua格式
配置User Agent等于 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.xx.xx.x Safari/537.36,执行动作挑战。
js挑战对接口类的请求、图片视频类请求的兼容性不好,建议只针对加载页面场景时使用。
特殊静态文件频繁异常访问
当您的某些静态文件出现大量超预期访问时,您可以结合上述访问特征,针对特定的URL进行访问频次的限制。
登录ESA控制台。
在左侧菜单栏,选择站点管理,单击目标站点详情。
在左侧菜单栏,选择安全防护 > WAF > 频次控制规则。
配置对应的频次控制规则:
输入规则名称
在如果请求匹配以下规则...位置配置规则。
比如某个客户端ip频繁访问您的某些静态文件,您可以根据静态文件特征,配置当URI/URI路径/URI字符串/文件扩展名等匹配时,对相同客户端请求做频次限制(需标准版及以上版本)。










配置User Agent等于 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.xx.xx.x Safari/537.36,执行动作挑战。

