WAF3.0 API¶
POST 编辑自定义控制规则¶
POST /prod-api/waf/wafv3/custom/rules/modifyCustomRule
新增或更新自定义控制规则。匹配条件、运算符、匹配对象请先通过 查询条件参数 获取;编辑前可先 查询自定义控制规则 回显。
填写说明¶
| 场景 | customRuleId |
说明 |
|---|---|---|
| -新增- | 请求体中-不传- | 服务端创建新规则并返回规则 ID |
| -编辑- | -必填- | 取自 列出自定义控制规则 或 查询自定义控制规则 的 customRuleId |
Body 请求参数
-新增示例-(不传 customRuleId):
{
"ruleMessage": "sql注入攻击 包含",
"status": "enable",
"wafId": 22,
"rules": {
"conditions": [
[
{
"target": "CHECK_REQUEST_HEADERS_NAMES",
"operator": "INT_EQ",
"name": "APP",
"values": ["0"]
},
{
"target": "IP_SRC",
"operator": "IP_IN_LIST",
"name": "IP_SRC",
"values": ["52"]
}
]
],
"action": {
"action": "DENY",
"parameters": [
{ "name": "log", "values": ["log"] }
]
}
}
}
-编辑示例-(必传 customRuleId,建议带回已有 conditionId):
{
"customRuleId": 61,
"ruleMessage": "sql注入攻击 包含",
"status": "enable",
"wafId": 22,
"rules": {
"conditions": [
[
{
"conditionId": 120000456,
"target": "CHECK_REQUEST_HEADERS_NAMES",
"operator": "INT_EQ",
"name": "APP",
"values": ["0"]
},
{
"conditionId": 120000457,
"target": "IP_SRC",
"operator": "IP_IN_LIST",
"name": "IP_SRC",
"values": ["52"]
}
]
],
"action": {
"action": "DENY",
"parameters": [
{ "name": "log", "values": ["log"] }
]
}
}
}
请求参数¶
| 名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
|---|---|---|---|---|---|
| Authorization | header | string | 是 | 鉴权 | Bearer Token |
| body | body | ModifyCustomRuleVO | 是 | ModifyCustomRuleVO | 见上文及数据模型 |
返回示例
200 Response
data 为保存后的 -customRuleId-(新增时为新 ID,编辑时为原 ID)。
返回结果¶
| 状态码 | 状态码含义 | 说明 |
|---|---|---|
| 200 | OK | 成功 |
| 401 | Unauthorized | 未授权 |
| 403 | Forbidden | 无权限 |
Body 请求参数字段说明¶
| 字段 | 说明 |
|---|---|
wafId |
策略组 ID,规则所属 WAF 策略组 |
ruleMessage |
规则描述/名称,最长 30 字符 |
status |
enable 启用 / disable 关闭 |
sort |
可选,排序号 |
rules.conditions |
条件二维数组,见 查询自定义控制规则 |
rules.action |
命中后动作,-仅支持下文 5 种 action 编码- |
rules.conditions[][](组内单条条件)¶
| 字段 | 说明 |
|---|---|
target |
匹配对象,与 查询条件参数 中 target 一致 |
operator |
运算符,如 EQ、IP_IN_LIST、INT_EQ |
values |
比较取值;数据集合填 -dataListId- 字符串 |
name |
展示名或子字段名(如检查请求头名时填具体 header 名) |
conditionId |
编辑时建议原样带回;新增条件不传 |
rules.action 下字段¶
| 字段 | 说明 |
|---|---|
action |
动作编码,见下表 -WAF3.0 动作对照- |
parameters |
{ "name", "values" } 数组;多数动作仅需配置 log |
WAF3.0 动作对照¶
WAF3.0 自定义规则-仅支持-以下动作(与 查询条件参数 中 data.actions 一致)。
| value | name | parameters |
|---|---|---|
DENY |
拦截 | 通常仅 log(log / nolog);可选 statusCode |
LOG |
仅记录不拦截 | 通常仅 log |
SKIP_RULES |
跳过规则 | log;以及 remainRules、limitRules、custodyRules(勾选要跳过的规则范围) |
WHITE_RULE_IDS |
加白规则ID | 通常仅 log;另可配置加白的规则 ID(以实现为准) |
REDIRECT |
重定向 | log;url;状态码 301 / 302 / 303 / 307 或 statusCode |
SKIP_RULES 的 parameters 键¶
| name | 含义 |
|---|---|
remainRules |
跳过其余自定义规则 |
limitRules |
跳过全部限速规则 |
custodyRules |
跳过全部托管(基础防护)规则 |
values 一般填与 name 相同的编码字符串,表示启用该项。
rules.action:各动作 JSON 示例¶
仅替换请求体中的 rules.action;rules.conditions 及根级字段须按业务填写。
-DENY(拦截)-
-LOG(仅记录不拦截)-
-SKIP_RULES(跳过规则)-
{
"action": "SKIP_RULES",
"parameters": [
{ "name": "log", "values": ["log"] },
{ "name": "remainRules", "values": ["remainRules"] },
{ "name": "limitRules", "values": ["limitRules"] },
{ "name": "custodyRules", "values": ["custodyRules"] }
]
}
-WHITE_RULE_IDS(加白规则 ID)-
-REDIRECT(重定向)-
{
"action": "REDIRECT",
"parameters": [
{ "name": "log", "values": ["log"] },
{ "name": "url", "values": ["/blocked"] },
{ "name": "statusCode", "values": ["302"] }
]
}
状态码也可使用 301、302、303、307 作为 name(与 describeParameter 元数据一致),以实现为准。
数据模型¶
ModifyCustomRuleVO
{
"customRuleId": 61,
"wafId": 22,
"ruleMessage": "string",
"sort": 1,
"status": "enable",
"rules": {
"action": {
"action": "DENY",
"parameters": [{ "name": "log", "values": ["log"] }]
},
"conditions": [
[
{
"conditionId": 0,
"name": "string",
"operator": "string",
"target": "string",
"values": ["string"]
}
]
]
}
}
属性¶
| 名称 | 类型 | 必选 | 中文名 | 说明 |
|---|---|---|---|---|
| customRuleId | integer(int64) | 编辑必填 | 规则 ID | 新增不传 |
| wafId | integer(int64) | 是 | 策略组 ID | - |
| ruleMessage | string | 是 | 规则描述 | 最长 30 字符 |
| sort | integer | 否 | 排序 | - |
| status | string | 是 | 状态 | enable / disable |
| rules | object | 是 | 规则体 | action + conditions |