nla自定义规则¶
GET 查询条件参数 nlaV1:acl:query¶
GET /prod-api/waf/nlaV1/custom/rules/describeParameter
请求参数¶
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| Authorization | header | string | 是 | 无单独说明 |
返回示例
200 Response
{
"msg": "成功",
"code": 200,
"data": {
"targets": [
{
"valueModelMap": {
"NOT_IP_IN_LIST": {
"type": "data_list",
"values": [
{
"options": [
{
"label": "black",
"value": 52
}
],
"label": "自定义"
}
]
},
"IP_IN_LIST": {
"type": "data_list",
"values": [
{
"options": [
{
"label": "black",
"value": 52
}
],
"label": "自定义"
}
]
}
},
"operators": ["IP_IN_LIST", "NOT_IP_IN_LIST"],
"name": "IP",
"remark": "",
"optionals": [],
"value": "IP_SRC",
"target": "IP_SRC"
},
{
"valueModelMap": {
"IN": {
"type": "multiple_group",
"values": [
{
"children": [
{
"label": "阿联酋",
"value": "AE"
},
{
"label": "乌兹别克斯坦",
"value": "UZ"
},
{
"label": "蒙古国 蒙古",
"value": "MN"
}
],
"label": "亚洲",
"value": "亚洲"
}
]
},
"NOT_IN": {
"type": "multiple_group",
"values": [
{
"children": [
{
"label": "蒙古国 蒙古",
"value": "MN"
}
],
"label": "亚洲",
"value": "亚洲"
}
]
}
},
"operators": ["IN", "NOT_IN"],
"name": "国家/地区",
"remark": "",
"groupList": [
{
"children": [
{
"label": "新西兰",
"value": "NZ"
}
],
"label": "大洋洲",
"value": "大洋洲"
}
],
"optionals": [],
"value": "COUNTRY_CODE",
"target": "COUNTRY_CODE"
},
{
"valueModelMap": {
"IN": {
"type": "multiple",
"values": [
{
"label": "北京",
"value": "Beijing"
},
{
"label": "上海",
"value": "Shanghai"
}
]
},
"NOT_IN": {
"type": "multiple",
"values": [
{
"label": "香港",
"value": "Xianggang"
},
{
"label": "澳门",
"value": "Aomen"
},
{
"label": "台湾",
"value": "Taiwan"
}
]
}
},
"selectList": [
{
"label": "香港",
"value": "Xianggang"
},
{
"label": "澳门",
"value": "Aomen"
},
{
"label": "台湾",
"value": "Taiwan"
}
],
"operators": ["IN", "NOT_IN"],
"name": "省份/地区",
"remark": "",
"optionals": [],
"value": "PROVINCE_CODE",
"target": "PROVINCE_CODE"
},
{
"valueModelMap": {
"IN_LIST": {
"type": "data_list",
"values": [
{
"options": [
{
"label": "zhuji",
"value": 79
},
{
"label": "zhuji",
"value": 80
}
],
"label": "自定义"
}
]
},
"NOT_IN_LIST": {
"type": "data_list",
"values": [
{
"options": [
{
"label": "zhuji",
"value": 79
},
{
"label": "zhuji",
"value": 80
}
],
"label": "自定义"
}
]
}
},
"operators": [
"EQ",
"NOT_EQ",
"CONTAINS",
"NOT_CONTAINS",
"MATCHES",
"NOT_MATCHES",
"IN_LIST",
"NOT_IN_LIST"
],
"name": "主机名",
"remark": "例如:example.com",
"optionals": null,
"value": "HOST",
"target": "HOST"
},
{
"valueModelMap": {},
"operators": [
"EQ",
"NOT_EQ",
"CONTAINS",
"NOT_CONTAINS",
"MATCHES",
"NOT_MATCHES"
],
"name": "查询字符串",
"remark": "例如:page=1234",
"optionals": null,
"value": "",
"target": "ARGS"
},
{
"valueModelMap": {
"IN_LIST": {
"type": "data_list",
"values": [
{
"options": [
{
"label": "uri",
"value": 62
}
],
"label": "自定义"
}
]
},
"NOT_IN_LIST": {
"type": "data_list",
"values": [
{
"options": [
{
"label": "uri",
"value": 62
}
],
"label": "自定义"
}
]
}
},
"operators": [
"EQ",
"NOT_EQ",
"CONTAINS",
"NOT_CONTAINS",
"BEGINS_WITH",
"NOT_BEGINS_WITH",
"ENDS_WITH",
"NOT_ENDS_WITH",
"MATCHES",
"NOT_MATCHES",
"IN_LIST",
"NOT_IN_LIST"
],
"name": "Uri请求",
"remark": "例如:/contact?page=1234",
"optionals": null,
"value": "REQUEST_URI",
"target": "REQUEST_URI"
},
{
"valueModelMap": null,
"operators": [
"EQ",
"NOT_EQ",
"CONTAINS",
"NOT_CONTAINS",
"BEGINS_WITH",
"NOT_BEGINS_WITH",
"ENDS_WITH",
"NOT_ENDS_WITH",
"MATCHES",
"NOT_MATCHES",
"IN_LIST",
"NOT_IN_LIST"
],
"name": "路径",
"remark": "例如:/contact",
"optionals": null,
"value": "URI",
"target": "URI"
},
{
"valueModelMap": {},
"operators": [
"EQ",
"NOT_EQ",
"CONTAINS",
"NOT_CONTAINS",
"MATCHES",
"NOT_MATCHES"
],
"name": "请求头",
"remark": "例如:Content-type",
"optionals": null,
"value": "",
"target": "REQUEST_HEADERS"
},
{
"valueModelMap": {},
"operators": [
"EQ",
"NOT_EQ",
"CONTAINS",
"NOT_CONTAINS",
"MATCHES",
"NOT_MATCHES",
"IN_LIST",
"NOT_IN_LIST"
],
"name": "用户代理",
"remark": "例如:Mozilla/5.0 (Windows NT 10.0; Win64; x64)...",
"optionals": null,
"value": "USER_AGENT",
"target": "USER_AGENT"
},
{
"valueModelMap": {
"IN": {
"type": "multiple",
"values": ["HTTP/1.0", "HTTP/1.1", "HTTP/1.2", "HTTP/2", "HTTP/3"]
},
"NOT_IN": {
"type": "multiple",
"values": ["HTTP/1.0", "HTTP/1.1", "HTTP/1.2", "HTTP/2", "HTTP/3"]
}
},
"operators": [
"IN",
"NOT_IN",
"EQ",
"NOT_EQ",
"CONTAINS",
"NOT_CONTAINS"
],
"name": "请求协议",
"remark": "例如:HTTP/1.0",
"optionals": ["HTTP/1.0", "HTTP/1.1", "HTTP/1.2", "HTTP/2", "HTTP/3"],
"value": "REQUEST_PROTOCOL",
"target": "REQUEST_PROTOCOL"
},
{
"valueModelMap": {
"IN": {
"type": "multiple",
"values": [
"GET",
"POST",
"PUT",
"DELETE",
"PURGE",
"HEAD",
"OPTIONS",
"PATCH"
]
},
"NOT_IN": {
"type": "multiple",
"values": [
"GET",
"POST",
"PUT",
"DELETE",
"PURGE",
"HEAD",
"OPTIONS",
"PATCH"
]
}
},
"operators": ["IN", "NOT_IN"],
"name": "请求方法",
"remark": "例如:GET",
"optionals": [
"GET",
"POST",
"PUT",
"DELETE",
"PURGE",
"HEAD",
"OPTIONS",
"PATCH"
],
"value": "REQUEST_METHOD",
"target": "REQUEST_METHOD"
},
{
"valueModelMap": {},
"operators": [
"EQ",
"NOT_EQ",
"CONTAINS",
"NOT_CONTAINS",
"MATCHES",
"NOT_MATCHES",
"IN_LIST",
"NOT_IN_LIST"
],
"name": "Referer",
"remark": "",
"optionals": null,
"value": "REFERER",
"target": "REFERER"
},
{
"valueModelMap": {
"IN_LIST": {
"type": "data_list",
"values": [
{
"options": [
{
"label": "123",
"value": 82
}
],
"label": "自定义"
}
]
},
"NOT_IN_LIST": {
"type": "data_list",
"values": [
{
"options": [
{
"label": "123",
"value": 82
}
],
"label": "自定义"
}
]
}
},
"operators": [
"EQ",
"NOT_EQ",
"CONTAINS",
"NOT_CONTAINS",
"MATCHES",
"NOT_MATCHES"
],
"name": "X-Forwarded-For",
"remark": "",
"optionals": null,
"value": "X_FORWARDED_FOR",
"target": "X_FORWARDED_FOR"
}
],
"actions": [
{
"operators": ["nolog", "log"],
"name": "拦截",
"value": "DENY",
"parameters": null
},
{
"operators": ["nolog", "log"],
"name": "仅记录不拦截",
"value": "LOG",
"parameters": null
},
{
"operators": ["nolog", "log"],
"name": "跳过后续规则",
"value": "ALLOW",
"parameters": null
},
{
"operators": ["nolog", "log"],
"name": "频率限速",
"value": "LIMIT_RATE",
"parameters": null
},
{
"operators": ["nolog", "log"],
"name": "人机验证",
"value": "CAPTCHA",
"parameters": null
},
{
"operators": ["nolog", "log"],
"name": "验证爬虫",
"value": "DETECTION_ROBOT",
"parameters": null
},
{
"operators": ["nolog", "log"],
"name": "重定向",
"value": "REDIRECT",
"parameters": {
"301": "301",
"302": "302",
"303": "303",
"307": "307"
}
},
{
"operators": ["nolog", "log"],
"name": "鉴权",
"value": "AUTHENTICATION",
"parameters": null
}
]
}
}
valueModelMap 字段说明(返回示例)¶
data.targets[] 中每个匹配类型的 valueModelMap 以运算符为键,值为该运算符下可选值的 UI/数据结构模型。返回示例中出现的顶层键如下。
| 字段名称 | 字段描述 |
|---|---|
IP_IN_LIST |
源 IP 在指定数据列表内时使用的取值模型;对象内含 type(示例为 data_list)、values(含 label、options 等,选项对应列表 ID)。 |
NOT_IP_IN_LIST |
源 IP 不在指定数据列表内时使用的取值模型;结构与 IP_IN_LIST 对称。 |
IN |
匹配值属于给定集合时使用的取值模型;type 可为 multiple_group(分组多选,如国家/地区)、multiple(扁平多选,如省份或 HTTP 方法/协议枚举)。 |
NOT_IN |
匹配值不属于给定集合时使用的取值模型;结构与 IN 对应。 |
IN_LIST |
字段值在自定义数据列表内时使用的取值模型;内含 type(示例为 data_list)、values(列表分组及 options 中的 label/value)。 |
NOT_IN_LIST |
字段值不在自定义数据列表内时使用的取值模型;结构与 IN_LIST 对称。 |
说明: 部分 target 的 valueModelMap 为 {}(如查询字符串、请求头等),表示该类型无上述预设枚举/列表模型,由 operators 中的其他算子(如 EQ、CONTAINS 等)配合自由输入;URI 在示例中未给出键值内容,含义与「无预设模型」相近。
valueModelMap的键**与 **targets[].operators:同一套条件运算符编码(如IN、EQ、IP_IN_LIST)。log/nolog:多出现在data.actions[].operators(动作是否记日志),与条件运算符共用同一套标签函数。custodyRules/limitRules/remainRules:规则范围或联动类选项的编码,具体出现在哪些表单以页面为准。
| 编码(JSON / 代码中的键) | 界面中文 |
|---|---|
EQ |
等于 |
NOT_EQ |
不等于 |
INT_EQ |
等于 |
INT_NOT_EQ |
不等于 |
IN |
包含以下各项 |
NOT_IN |
不包含以下各项 |
CONTAINS |
包含 |
NOT_CONTAINS |
不包含 |
MATCHES |
与正则表达式匹配 |
NOT_MATCHES |
与正则表达式不匹配 |
BEGINS_WITH |
开头匹配 |
NOT_BEGINS_WITH |
开头不匹配 |
ENDS_WITH |
末尾匹配 |
NOT_ENDS_WITH |
末尾不匹配 |
IN_LIST |
在数据集合中 |
NOT_IN_LIST |
不在数据集合中 |
IP_IN_LIST |
在数据集合中 |
NOT_IP_IN_LIST |
不在数据集合中 |
EXIST |
存在 |
NOT_EXIST |
不存在 |
log |
记录 |
nolog |
不记录 |
custodyRules |
全部基础防护规则及插件 |
limitRules |
全部限速规则 |
remainRules |
其余自定义规则 |
data.actions 字段说明(返回示例)¶
data.actions 为规则命中后可执行动作的元数据列表,供前端渲染动作类型、日志选项及附加参数(如重定向状态码)。以下为返回 JSON 中与 actions 相关的每个字段说明。
1. 顶层:data.actions¶
| 字段路径 | 类型 | 说明 |
|---|---|---|
data.actions |
array |
动作定义列表;顺序由接口返回决定,每一项描述一种可选动作及其 UI 约束。 |
2. 数组元素:data.actions[](动作项对象字段)¶
| 字段路径 | 类型 | 说明 |
|---|---|---|
data.actions[].operators |
string[] |
该动作下可选的日志/记录策略枚举,用于配置「是否记日志」类子选项;示例中固定为 ["nolog","log"] 两项。 |
data.actions[].name |
string |
动作的中文展示名(界面文案),与 value 一一对应,不参与业务编码。 |
data.actions[].value |
string |
动作的编码值(提交/保存自定义规则时使用的动作标识),如 DENY、REDIRECT 等。 |
data.actions[].parameters |
object 或空 |
附加参数元数据:未给出具体对象时,表示该动作无需配置结构化子参数;为对象时,键值对描述子选项(见下节「parameters 对象字段」)。 |
3. data.actions[].operators[] 枚举值(数组元素)¶
| 元素取值 | 说明 |
|---|---|
nolog |
表示可选择「不记录日志」或等价的不落日志策略(具体语义以实现为准)。 |
log |
表示可选择「记录日志」或等价的落日志策略(具体语义以实现为准)。 |
4. data.actions[].parameters 为对象时(仅 value 为 REDIRECT 的项)¶
当 data.actions[].value === "REDIRECT" 时,parameters 为对象,其每个键表示一种可选的 HTTP 重定向状态码;键名与对应属性值在示例中为相同字符串,供下拉或映射展示。
| 字段路径 | 类型 | 说明 |
|---|---|---|
data.actions[].parameters |
object |
重定向动作下可选状态码集合的映射表。 |
data.actions[].parameters["301"] |
string |
可选重定向码 301(永久重定向);值为字面量 "301"。 |
data.actions[].parameters["302"] |
string |
可选重定向码 302(临时重定向);值为字面量 "302"。 |
data.actions[].parameters["303"] |
string |
可选重定向码 303(See Other);值为字面量 "303"。 |
data.actions[].parameters["307"] |
string |
可选重定向码 307(Temporary Redirect);值为字面量 "307"。 |
5. 返回示例中各动作项:name / value / parameters 对照¶
value(编码) |
name(展示名) |
parameters |
|---|---|---|
DENY |
拦截 | 无附加参数 |
LOG |
仅记录不拦截 | 无附加参数 |
ALLOW |
跳过后续规则 | 无附加参数 |
LIMIT_RATE |
频率限速 | 无附加参数 |
CAPTCHA |
人机验证 | 无附加参数 |
DETECTION_ROBOT |
验证爬虫 | 无附加参数 |
REDIRECT |
重定向 | 非空对象,键为 301、302、303、307(见上表) |
AUTHENTICATION |
鉴权 | 无附加参数 |
返回结果¶
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | OK | Inline |
| 401 | Unauthorized | Unauthorized | 无独立数据模型 |
| 403 | Forbidden | Forbidden | 无独立数据模型 |
| 404 | Not Found | Not Found | 无独立数据模型 |