WAF3.0 API¶
GET 查询自定义控制规则¶
GET /prod-api/waf/wafv3/custom/rules/describeCustomRule/{customRuleId}
根据 customRuleId 获取单条自定义控制规则的完整配置(匹配条件 + 处置动作),用于编辑页回显。规则 ID 来自 列出自定义控制规则 返回的 customRuleId。
保存修改请调用 编辑自定义控制规则;条件运算符、匹配对象、动作枚举见 查询条件参数。
请求参数¶
| 名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
|---|---|---|---|---|---|
| customRuleId | path | integer(int64) | 是 | 规则 ID | 列表接口返回的 customRuleId |
| Authorization | header | string | 是 | 鉴权 | Bearer Token |
返回示例
200 Response
{
"msg": "成功",
"code": 200,
"data": {
"customRuleId": 61,
"wafId": null,
"ruleMessage": "sql注入攻击 包含",
"sort": 1,
"rules": {
"action": {
"action": "DENY",
"parameters": [
{
"name": "log",
"values": ["log"]
}
]
},
"conditions": [
[
{
"conditionId": 120000456,
"operator": "INT_EQ",
"target": "CHECK_REQUEST_HEADERS_NAMES",
"name": "APP",
"values": ["0"]
},
{
"conditionId": 120000457,
"operator": "IP_IN_LIST",
"target": "IP_SRC",
"name": "IP_SRC",
"values": ["52"]
}
]
]
},
"status": "enable"
}
}
本示例规则含义(便于理解)¶
| 配置项 | 含义 |
|---|---|
| 条件 1 | 请求头中**不存在**名为 APP 的请求头(INT_EQ + values: ["0"] 表示「不存在」,见 查询条件参数 中「检查请求头名」) |
| 条件 2 | 源 IP **在**数据集合 ID 为 52 的列表中(IP_IN_LIST,集合名称可在 describeParameter 的 data_list 选项中对照 label) |
| 条件组关系 | 上述两条在同一内层数组中,表示**同时满足**(与关系) |
| 动作 | DENY:拦截;parameters 中 log 表示命中后**记录日志** |
返回结果¶
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | 成功 | Inline |
| 401 | Unauthorized | 未授权 | - |
| 403 | Forbidden | 无权限 | - |
| 404 | Not Found | 规则不存在或无权访问 | - |
返回数据结构¶
状态码 200
| 名称 | 类型 | 必选 | 中文名 | 说明 |
|---|---|---|---|---|
| » msg | string | 是 | 提示信息 | - |
| » code | integer | 是 | 状态码 | 200 表示成功 |
| » data | object | 是 | 规则详情 | 结构与 编辑自定义控制规则 请求体一致,可直接用于回显后修改再提交 |
data 顶层字段¶
| 字段 | 类型 | 说明 |
|---|---|---|
customRuleId |
integer(int64) | 规则唯一 ID;编辑保存时**必填** |
wafId |
integer 或 null | 策略组 ID。本接口查询结果中常为 null,编辑提交时仍需在请求体中传入正确的 wafId(可从列表接口或控制台上下文获取) |
ruleMessage |
string | 规则描述/名称 |
sort |
integer | 同策略组内排序号,越小越靠前 |
status |
string | enable 启用 / disable 关闭 |
rules |
object | 规则逻辑:条件 + 动作 |
data.rules 结构¶
| 字段 | 说明 |
|---|---|
rules.action |
命中后的处置动作,见下节 |
rules.conditions |
匹配条件:二维数组 |
conditions 二维数组说明
conditions: [
[ 条件A, 条件B, ... ], // 第 1 个条件组:组内为「与」关系(须同时满足)
[ 条件C, ... ], // 第 2 个条件组(若有多组,组与组之间一般为「或」,以实现为准)
]
本接口示例仅 1 个条件组,组内 2 条子条件须**同时**成立才命中该组。
data.rules.conditions[][] 单条条件¶
| 字段 | 类型 | 说明 |
|---|---|---|
conditionId |
integer(int64) | 条件持久化 ID;更新规则时建议原样带回,便于服务端识别原记录 |
operator |
string | 运算符编码,如 EQ、IP_IN_LIST、INT_EQ;与 查询条件参数 中 operators 一致 |
target |
string | 匹配对象编码,如 IP_SRC、REQUEST_URI |
name |
string | 匹配维度展示名或子字段名。如「检查请求头名」时 name 为具体请求头名称(示例 APP);多数类型与 target 相同 |
values |
string[] | 比较用的取值。数据集合类运算符填 dataListId 字符串(如 "52");INT_EQ 填 "0"/"1" 表示不存在/存在 |
常见 operator + values 填写对照¶
| operator | values 示例 | 含义 |
|---|---|---|
IP_IN_LIST |
["52"] |
源 IP 在 ID=52 的自定义数据集合中 |
NOT_IP_IN_LIST |
["52"] |
源 IP 不在该集合中 |
IN_LIST / NOT_IN_LIST |
["62"] |
字段值在/不在指定数据集合中 |
IN / NOT_IN |
["CN","JP"] |
国家/地区代码在/不在给定集合中 |
EQ |
["test.example.com"] |
等于 |
CONTAINS |
["sql"] |
包含子串 |
INT_EQ(检查请求头名) |
["0"] |
请求头 name 指定名称**不存在** |
INT_EQ(检查请求头名) |
["1"] |
请求头 存在 |
ENDS_WITH |
["js","png"] |
后缀匹配(多值一般为「满足其一」以实现为准) |
data.rules.action:动作与参数¶
固定结构:
action:动作类型编码(提交 编辑自定义控制规则 时使用该字段,**不是**中文name)。parameters:参数数组,每项为{ "name": "参数键", "values": ["取值", ...] }。
WAF3.0 动作编码一览(与 describeParameter 中 actions 一致)¶
action |
含义 | parameters 常见项 |
|---|---|---|
DENY |
拦截 | log:log / nolog |
LOG |
仅记录不拦截 | log |
SKIP_RULES |
跳过规则 | log;以及 remainRules、limitRules、custodyRules(值为对应编码字符串,表示跳过哪些规则类型) |
WHITE_RULE_IDS |
加白规则 ID | log;另可配置加白的规则 ID 列表(以实现为准) |
REDIRECT |
重定向 | log;statusCode 或 parameters 元数据中的 301/302/303/307 等 |
parameters[].name 说明¶
| name | 说明 | 常见 action |
|---|---|---|
log |
是否记录日志:values 为 ["log"] 或 ["nolog"] |
多数动作 |
remainRules |
跳过其余自定义规则 | SKIP_RULES |
limitRules |
跳过全部限速规则 | SKIP_RULES |
custodyRules |
跳过全部托管规则 | SKIP_RULES |
statusCode / 301 等 |
重定向状态码或拦截返回码 | REDIRECT、DENY(以实现为准) |
url |
重定向 URL | REDIRECT |
与编辑接口的配合¶
- 查询:
GET .../describeCustomRule/{customRuleId}→ 得到data。 - 回显:将
data填入编辑表单;若wafId为null,从 列出自定义控制规则 或页面上下文补全wafId。 - 保存:
POST .../modifyCustomRule,请求体需包含customRuleId、wafId、ruleMessage、status、rules(可增删改conditions,保留或更新conditionId)。
新增规则时不传 customRuleId;编辑时**必传** customRuleId(见 编辑自定义控制规则 填写说明)。
数据模型¶
ModifyCustomRuleVO
查询与保存共用同一结构;查询时 data 即本模型。
{
"customRuleId": 61,
"wafId": 22,
"ruleMessage": "sql注入攻击 包含",
"sort": 1,
"status": "enable",
"rules": {
"action": {
"action": "DENY",
"parameters": [{ "name": "log", "values": ["log"] }]
},
"conditions": [
[
{
"conditionId": 120000456,
"operator": "INT_EQ",
"target": "CHECK_REQUEST_HEADERS_NAMES",
"name": "APP",
"values": ["0"]
}
]
]
}
}
属性¶
| 名称 | 类型 | 必选 | 中文名 | 说明 |
|---|---|---|---|---|
| customRuleId | integer(int64) | 查询必有;新增不传 | 规则 ID | 编辑必填 |
| wafId | integer(int64) | 保存必填 | 策略组 ID | 查询结果可能为 null |
| ruleMessage | string | 是 | 规则描述 | 最长 30 字符 |
| sort | integer | 否 | 排序 | - |
| status | string | 是 | 状态 | enable / disable |
| rules | object | 是 | 规则体 | 含 action、conditions |