更新时间:2026-01-07 GMT+08:00

创建精准防护规则

功能介绍

创建精准防护规则

URI

POST /v1/{project_id}/waf/policy/{policy_id}/custom

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

项目ID,对应控制台用户名->我的凭证->项目列表->项目ID

policy_id

String

防护策略id,通过指定防护策略id来指明查询该防护策略下的防护规则,您可以通过调用查询防护策略列表(ListPolicy)获取策略id

表2 Query参数

参数

是否必选

参数类型

描述

enterprise_project_id

String

您可以通过调用企业项目管理服务(EPS)的查询企业项目列表接口(ListEnterpriseProject)查询企业项目id

请求参数

表3 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

用户Token,通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。

Content-Type

String

内容类型

表4 请求Body参数

参数

是否必选

参数类型

描述

time

Boolean

精准防护规则生效时间:

  • “false”:表示该规则立即生效。

  • “true”:表示自定义生效时间。

start

Long

精准防护规则生效的起始时间戳(秒)。当time=true,才需要填写该参数。

terminal

Long

精准防护规则生效的终止时间戳(秒)。当time=true,才需要填写该参数。

description

String

规则描述

conditions

Array of CustomConditions objects

匹配条件列表

action

CustomAction object

精准防护规则命中后操作对象

priority

Integer

执行该规则的优先级,值越小,优先级越高,值相同时,规则创建时间早,优先级越高。取值范围:0到1000。

name

String

规则名称

表5 CustomConditions

参数

是否必选

参数类型

描述

category

String

字段类型。可选值为:url、user-agent、ip、params、cookie、referer、header、request_line、method、request

index

String

子字段:

  • 字段类型为url、user-agent、ip、refer、request_line、method、request时,不需要传index参数

  • 字段类型为params、header、cookie并且子字段为自定义时,index的值为自定义子字段

logic_operation

String

条件列表匹配逻辑。

  • 如果字段类型category是url、user-agent或者referer, 匹配逻辑可以为:contain、 not_contain、 equal、 not_equal、 prefix、 not_prefix、 suffix、 not_suffix、 contain_any、 not_contain_all、 equal_any、 not_equal_all、 equal_any、 not_equal_all、 prefix_any、 not_prefix_all、 suffix_any、 not_suffix_all、 len_greater、 len_less、len_equal或者len_not_equal

  • 如果字段类型category是ip, 匹配逻辑可以为: equal、not_equal、equal_any或者not_equal_all

  • 如果字段类型category是method, 匹配逻辑可以为: equal或者not_equal n - 如果字段类型category是request_line或者request, 匹配逻辑可以为: len_greater、len_less、len_equal或者len_not_equal

  • 如果字段类型category是params、cookie或者header, 匹配逻辑可以为:contain、 not_contain、 equal、 not_equal、 prefix、 not_prefix、 suffix、 not_suffix、 contain_any、 not_contain_all、 equal_any、 not_equal_all、 equal_any、 not_equal_all、 prefix_any、 not_prefix_all、 suffix_any、 not_suffix_all、 len_greater、 len_less、len_equal、len_not_equal、、num_greater、num_less、num_equal、num_not_equal、exist或者not_exist

contents

Array of strings

条件列表逻辑匹配内容。当logic_operation参数不以any或者all结尾时,需要传该参数。

value_list_id

String

引用表id。当logic_operation参数以any或者all结尾时,需要传该参数。此外,引用表类型要与category类型保持一致。

表6 CustomAction

参数

是否必选

参数类型

描述

category

String

操作类型。

  • “block”:拦截。

  • “pass”:放行。

  • “log”:仅记录

followed_action_id

String

攻击惩罚规则id,只有当category参数值为block时才可配置该参数

响应参数

状态码:200

表7 响应Body参数

参数

参数类型

描述

id

String

规则id

name

String

规则名称

policyid

String

策略id

description

String

规则描述

status

Integer

规则状态,0:关闭,1:开启

conditions

Array of conditions objects

匹配条件列表,匹配条件必须同时满足。

action

CustomAction object

精准防护规则命中后操作对象

action_mode

Boolean

预留参数,可忽略。

priority

Integer

执行该规则的优先级,值越小,优先级越高,值相同时,规则创建时间早,优先级越高。取值范围:0到1000。

timestamp

Long

创建精准防护规则的

time

Boolean

精准防护规则生效时间:

  • “false”:表示该规则立即生效。

  • “true”:表示自定义生效时间。

start

Long

精准防护规则生效的起始时间戳(秒)。当time=true,才会返回该参数。

terminal

Long

精准防护规则生效的终止时间戳(秒)。当time=true,才会返回该参数。

producer

Integer

规则创建对象,该参数为预留参数,用于后续功能扩展,当前请用户忽略该参数

表8 conditions

参数

参数类型

描述

category

String

字段类型。可选值为:url、user-agent、ip、params、cookie、referer、header、request_line、method、reqeust

index

String

子字段:

  • 字段类型为url、user-agent、ip、refer、request_line、method、reqeust时,不需要传index参数

  • 字段类型为params、header、cookie并且子字段为自定义时,index的值为自定义子字段

logic_operation

String

条件匹配逻辑。

contents

Array of strings

条件匹配的内容

value_list_id

String

引用表id。

表9 CustomAction

参数

参数类型

描述

category

String

操作类型。

  • “block”:拦截。

  • “pass”:放行。

  • “log”:仅记录

followed_action_id

String

攻击惩罚规则id,只有当category参数值为block时才可配置该参数

状态码:400

表10 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误信息

状态码:401

表11 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误信息

状态码:500

表12 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误信息

请求示例

在项目id为project_id和防护策略id为policy_id的防护策略下创建精准防护规则。规则的名称test55,精准防护规则命中后防护动作为拦截,执行该规则的优先级为50,匹配条件为header中发现demo字段包含“demo“,精准防护规则生效时间为立即生效。

POST https://{Endpoint}/v1/{project_id}/waf/policy/{policy_id}/custom?enterprise_project_id=0

{
  "name" : "test55",
  "description" : "",
  "action" : {
    "category" : "block"
  },
  "priority" : 50,
  "conditions" : [ {
    "category" : "header",
    "logic_operation" : "contain",
    "index" : "demo",
    "contents" : [ "demo" ]
  } ],
  "time" : false
}

响应示例

状态码:200

ok

{
  "action" : {
    "category" : "block"
  },
  "action_mode" : false,
  "conditions" : [ {
    "category" : "header",
    "index" : "demo",
    "logic_operation" : "contain",
    "contents" : [ "demo" ]
  } ],
  "description" : "",
  "name" : "test55",
  "id" : "2a3caa2bc9814c09ad73d02e3485b4a4",
  "policyid" : "1f016cde588646aca3fb19f277c44d03",
  "priority" : 50,
  "status" : 1,
  "time" : false,
  "timestamp" : 1656495488880
}

状态码

状态码

描述

200

ok

400

请求失败

401

token权限不足

500

服务器内部错误

错误码

请参见错误码