我想使用haproxy (1.7.5-2 2017/05/17,debian拉伸股票)作为防御一些可能的攻击(例如SQL注入)的第一道防线。我的想法是在前端创建一个acl,它使用regexps检测不想要的模式,然后在这种情况下使用一个总是失败的虚拟后端。就像这样:
acl sql_injection url_reg -i -f /etc/haproxy/sqlinject.patterns
use_backend bad_request if sql_injection
问题是,如果url是url编码的,那么foo.com/?select foo from bar
将作为foo.com/?select%20 foo%20from%20bar
传输,这确实需要一个不同的regexp,因此匹配的regexp将被不必要地扩展。因此,url_dec来了:
acl sql_injection url_reg,url_dec -i -f /etc/haproxy/sqlinject.patterns
然而,这似乎不起作用,因为它似乎不匹配任何东西。即使我将.*
放入模式文件,也没有匹配。
配置中没有语法错误,因为haproxy -c
不返回警告或错误。如何匹配已解码的查询字符串?
发布于 2018-05-22 03:20:04
@michael-sqlbot建议的变体似乎正在发挥作用:
acl sql_injection url,url_dec -m reg -i -f /etc/haproxy/sqlinject.patterns
因此,无论是在配置验证中还是在解释中,上述似乎都是一个haproxy错误。
https://serverfault.com/questions/912810
复制相似问题