跳转至

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

{
  "msg": "成功",
  "code": 200,
  "data": 61
}

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 运算符,如 EQIP_IN_LISTINT_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 拦截 通常仅 loglog / nolog);可选 statusCode
LOG 仅记录不拦截 通常仅 log
SKIP_RULES 跳过规则 log;以及 remainRuleslimitRulescustodyRules(勾选要跳过的规则范围)
WHITE_RULE_IDS 加白规则ID 通常仅 log;另可配置加白的规则 ID(以实现为准)
REDIRECT 重定向 logurl;状态码 301 / 302 / 303 / 307statusCode

SKIP_RULESparameters

name 含义
remainRules 跳过其余自定义规则
limitRules 跳过全部限速规则
custodyRules 跳过全部托管(基础防护)规则

values 一般填与 name 相同的编码字符串,表示启用该项。

rules.action:各动作 JSON 示例

仅替换请求体中的 rules.actionrules.conditions 及根级字段须按业务填写。

-DENY(拦截)-

{
  "action": "DENY",
  "parameters": [
    { "name": "log", "values": ["log"] }
  ]
}

-LOG(仅记录不拦截)-

{
  "action": "LOG",
  "parameters": [
    { "name": "log", "values": ["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)-

{
  "action": "WHITE_RULE_IDS",
  "parameters": [
    { "name": "log", "values": ["log"] }
  ]
}

-REDIRECT(重定向)-

{
  "action": "REDIRECT",
  "parameters": [
    { "name": "log", "values": ["log"] },
    { "name": "url", "values": ["/blocked"] },
    { "name": "statusCode", "values": ["302"] }
  ]
}

状态码也可使用 301302303307 作为 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