【产品技术】如何创建一条精准防护规则
URI格式
POST /v1/{project_id}/waf/policy/{policy_id}/custom
Path参数说明 |
|||
名称 |
是否必选 |
参数类型 |
说明 |
project_id |
是 |
String |
用户操作的项目ID。 |
policy_id |
是 |
String |
策略ID。 |
请求消息
请求参数
请求参数说明 |
|||
名称 |
是否必选 |
参数类型 |
说明 |
name |
是 |
String |
自定义规则的名称。最大长度为256字符。只支持以数字、字母、下划线或中划线命名。 |
time |
否 |
Boolean |
精准防护规则生效时间。
|
start |
否 |
Long |
精准防护规则生效的起始时间。当time=true时,起始时间和终止时间必须有一个非空。 |
end |
否 |
Long |
精准防护规则生效的终止时间。当time=true时,起始时间和终止时间必须有一个非空。 |
conditions |
是 |
List of 表3 |
匹配条件列表。 |
action |
是 |
表4 |
精准防护规则命中后操作对象。 |
priority |
否 |
Integer |
执行该规则的优先级,值越小,优先级越高,值相同时,规则创建时间早,优先级越高。取值范围:0到65535。 |
conditions |
|||
名称 |
是否必选 |
参数类型 |
说明 |
category |
是 |
String |
条件类型。固定值path、user-agent、ip、params、cookie、referer、header。 |
index |
否 |
String |
|
logic |
是 |
String |
“contain”,“not_contain”“equal”,“not_equal”,“prefix”,“not_prefix”,“suffix”,“not_suffix”分别代表包含、不包含、等于、不等于、前缀为、前缀不为、后缀为、后缀不为。 当条件类型“category”为ip时,“logic”只能为“equal”或者“not_equal”。 |
contents |
是 |
List |
条件匹配的内容。目前该字段只接受一个值,不要写入多个参数。 |
action |
|||
名称 |
是否必选 |
参数类型 |
说明 |
category |
是 |
String |
操作类型。
|
响应消息
响应参数
响应参数说明 |
||
名称 |
参数类型 |
说明 |
id |
String |
精准防护规则的ID。 |
policy_id |
String |
精准防护规则的策略ID。 |
name |
String |
精准防护规则的名称。 |
conditions |
List of 表6 |
精准防护规则的匹配条件列表。 |
action |
表7 |
精准防护规则命中后操作对象。 |
priority |
Integer |
执行该规则的优先级,值越小,优先级越高,值相同时,规则创建时间早,优先级越高。取值范围:0到65535。 |
time |
Boolean |
精准防护规则的生效时间。
|
start |
Long |
精准防护规则生效的起始时间。 |
end |
Long |
精准防护规则生效的终止时间。 |
timestamp |
Long |
创建精准访问防护规则的时间。 |
conditions |
||
名称 |
参数类型 |
说明 |
category |
String |
条件类型。固定值path、user-agent、ip、params、cookie、referer、header。 |
index |
String |
|
logic |
String |
“contain”,“not_contain”“equal”,“not_equal”,“prefix”,“not_prefix”,“suffix”,“not_suffix”分别代表包含、不包含、等于、不等于、前缀为、前缀不为、后缀为、后缀不为。 当条件类型“category”为ip时,“logic”只能为“equal”或者“not_equal”。 |
contents |
List |
条件匹配的内容。 |
action |
||
名称 |
参数类型 |
说明 |
category |
String |
操作类型。
|
举个栗子
以创建一条名为“rule1”的精准防护规则为例。
请求样例
{
"name":"rule1",
"time": true,
"start": 1499817600,
"end": 1567817600,
"conditions": [{
"category": "path",
"contents": ["/login"],
"logic": "contain"
},{
"category": "ip",
"logic": "equal",
"contents": ["X.X.1.1"]
}
],
"action": {
"category": "block"
},
"priority": 10
}
响应样例
{
"id": "7374ad99c6c448e9a9ca35cb46660a39",
"policy_id": "9tre832yf96784ec8abd8ba61a98064ef",
"name":"rule1",
"time": true,
"start": 1499817600,
"end": 1567817600,
"conditions": [{
"category": "path",
"contents": ["/login"],
"logic": "contain"
},{
"category": "ip",
"logic": "equal",
"contents": ["X.X.1.1"]
}
],
"action": {
"category": "block"
},
"priority": 10,
"timestamp": 1499817600
}
API返回的正常状态码如下
状态码 |
||
状态码 |
编码 |
状态说明 |
200 |
OK |
客户端请求已处理成功。 |
- 点赞
- 收藏
- 关注作者
评论(0)