HAProxy如何配置ACL规则拒绝带指定查询参数的POST请求访问
HAProxy配置ACL拦截携带指定查询参数的POST请求
直接在对应的frontend配置段添加匹配规则即可,不需要额外写复杂正则,用HAProxy内置的匹配方法准确率更高。
具体配置逻辑
- 先定义三个匹配维度的ACL规则:
- 匹配POST请求方法
- 匹配目标API端点路径(示例为
/api) - 匹配查询字符串中是否携带目标参数(示例为
param)
- 配置拦截动作,三个条件同时满足时直接拒绝请求
可直接复用的配置片段
把下面的内容加到你的HAProxy frontend配置块里:
# 定义ACL匹配规则 acl is_post method POST acl target_api path /api acl has_blocked_param url_param(param) -m found # 命中规则返回403拒绝 http-request deny if is_post target_api has_blocked_param
规则说明
- 上述配置会精准拦截所有类似
POST /api?param、POST /api?param=任意值&其他参数=xxx的请求,不会出现误拦截xxxparam这类同前缀参数的问题 - 用内置的
url_param()方法匹配参数,比手写正则匹配查询串更可靠,会自动处理URL编码、参数位置变化的场景 - 如果不需要限定只拦截
/api端点,直接删掉规则里的target_api即可;如果要自定义拦截返回的状态码,比如返回400,可把deny改成deny status 400
内容的提问来源于stack exchange,提问作者Georg Kastenhofer
相关产品推荐
相关产品推荐

