跳转至

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:拦截;parameterslog 表示命中后**记录日志**

返回结果

状态码 状态码含义 说明 数据模型
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 运算符编码,如 EQIP_IN_LISTINT_EQ;与 查询条件参数operators 一致
target string 匹配对象编码,如 IP_SRCREQUEST_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 拦截 loglog / nolog
LOG 仅记录不拦截 log
SKIP_RULES 跳过规则 log;以及 remainRuleslimitRulescustodyRules(值为对应编码字符串,表示跳过哪些规则类型)
WHITE_RULE_IDS 加白规则 ID log;另可配置加白的规则 ID 列表(以实现为准)
REDIRECT 重定向 logstatusCode 或 parameters 元数据中的 301/302/303/307
parameters[].name 说明
name 说明 常见 action
log 是否记录日志:values["log"]["nolog"] 多数动作
remainRules 跳过其余自定义规则 SKIP_RULES
limitRules 跳过全部限速规则 SKIP_RULES
custodyRules 跳过全部托管规则 SKIP_RULES
statusCode / 301 重定向状态码或拦截返回码 REDIRECTDENY(以实现为准)
url 重定向 URL REDIRECT

与编辑接口的配合

  1. 查询GET .../describeCustomRule/{customRuleId} → 得到 data
  2. 回显:将 data 填入编辑表单;若 wafIdnull,从 列出自定义控制规则 或页面上下文补全 wafId
  3. 保存POST .../modifyCustomRule,请求体需包含 customRuleIdwafIdruleMessagestatusrules(可增删改 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 规则体 actionconditions