我正在修复默认设置php-url-fopen过滤器允许我在系统中使用的一些 GET 查询参数(它不公开可用,但我仍然想阻止不必要的请求)。问题是我为一个参数名称获得了有效的正则表达式,但我无法为两个参数获得有效的正则表达式,其中第二个选项由两个名称组合而成。我正在使用 fail2ban 0.8.11 - 这是有效的(失败)正则表达式:
^<HOST> -.*"(GET|POST).*\?.*(?<!outer)\=http\:\/\/.* HTTP\/.*$
这是不起作用的正则表达式:
^<HOST> -.*"(GET|POST).*\?.*(?<!outer|type\=outer\&url)\=http\:\/\/.* HTTP\/.*$
当我尝试使用不起作用的正则表达式启动 fail2ban 服务时,收到以下消息:
ERROR NOK: ('Unable to compile regular expression \'^(?:::f{4,6}:)?(?P<host>[\\w\\-.^_]*\\w) -.*"(GET|POST).*\\?.*(?<!outer|type\\=outer\\&url)\\=http\\:\\/\\/.* HTTP\\/.*$\'',)
任何帮助,将不胜感激。
答案1
我的第二个正则表达式的解决方案是:
^<HOST> -.*"(GET|POST).*\?.*(?<!outer)(?<!type\=outer\&url)\=http\:\/\/.* HTTP\/.*$
GET 查询中的两个单词/参数必须分开,并且只能包含在一个负向后视中。