如何配置Cloud Armor规则拦截POST请求体含指定文本的请求
Cloud Armor拦截指定POST请求体内容配置步骤
前置配置确认
首先需开启Cloud Armor的请求体解析能力,默认该能力未启用,无法读取POST请求体内容:
- 进入目标Cloud Armor安全策略的「高级配置」页面
- 找到「请求体解析」开关,勾选开启,该能力支持匹配请求前8KB的内容,可覆盖你的deviceid字段匹配需求
规则配置步骤
- 回到安全策略的「规则」标签页,点击「添加规则」
- 按以下参数填写规则配置:
- 优先级:填写小于现有放行规则的数值(数值越小优先级越高,示例可填10,保证该拦截规则优先匹配)
- 匹配条件类型:选择「自定义匹配(CEL表达式)」
- 匹配规则:填入以下CEL代码,如需更精准匹配避免误杀可使用第二行的精准匹配规则:
// 通用匹配:只要请求体包含ABC123就触发 request.method == 'POST' && request.body.contains('ABC123') // 精准匹配:仅匹配deviceid值为ABC123的请求 request.method == 'POST' && request.body.contains("'deviceid':'ABC123'")
- 动作:选择「拒绝(Deny)」
- 拒绝状态码:推荐选择
403 Forbidden,也可根据自身需求选择其他状态码 - 规则描述:可填写「拦截deviceid为ABC123的恶意爬虫请求」方便后续维护
- 保存规则后等待1~2分钟,规则即可全局生效
注意:如果你的POST请求经过gzip等压缩格式传输,需要先在前端负载均衡层配置请求解压,否则Cloud Armor无法识别压缩后的请求体内容,会导致规则不匹配。
内容的提问来源于stack exchange,提问作者Chizuoka
相关产品推荐
相关产品推荐

