haproxy url_dec 无法与 url_reg 配合使用

haproxy url_dec 无法与 url_reg 配合使用

我想使用 haproxy(1.7.5-2 2017/05/17,debian stretch stock)作为防御某些可能攻击(例如 SQL 注入)的第一道防线。我的想法是在前端创建一个使用正则表达式检测不需要的模式的 acl,然后在这种情况下使用始终失败的虚拟后端。类似这样:

acl sql_injection url_reg -i -f /etc/haproxy/sqlinject.patterns
use_backend bad_request if sql_injection                                                                            

问题是,如果 url 是 url 编码的,那么 egfoo.com/?select foo from bar将被传输为foo.com/?select%20 foo%20from%20bar,这实际上需要一个不同的正则表达式,因此匹配的正则表达式会不必要地宽泛。因此出现了 url_dec:

acl sql_injection url_reg,url_dec -i -f /etc/haproxy/sqlinject.patterns

但是,这似乎不起作用,因为它似乎没有匹配任何内容。即使我将其放入.*模式文件,也没有匹配结果。

配置中没有语法错误,因为haproxy -c没有返回任何警告或错误。我该如何匹配 urldecoded 查询字符串?

答案1

@michael-sqlbot 建议的变体似乎有效:

acl sql_injection url,url_dec -m reg -i -f /etc/haproxy/sqlinject.patterns

因此,以上似乎是 haproxy 的错误,无论是在配置验证还是解释中。

相关内容