首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >fail2ban正则表达式中的奇性

fail2ban正则表达式中的奇性
EN

Stack Overflow用户
提问于 2020-07-09 23:00:01
回答 1查看 507关注 0票数 4

这似乎是fail2ban中的一个bug,在fail2ban-regex工具和failregex过滤器之间有不同的行为。

我试图为fail2ban开发一个新的正则表达式,以匹配:

\"%20and%20\"x\"%3D\"x

当使用fail2ban-regex时,这似乎会产生所需的结果:

^<HOST>.*GET.*\\"%20and%20\\"x\\"%3D\\"x.* 200.*$

这一点也是如此:

^<HOST>.*GET.*\\\"%20and%20\\\"x\\\"%3D\\\"x.* 200.*$

但是,当我将其中任何一个放入过滤器中时,都会得到以下错误:

Failed during configuration: '%' must be followed by '%' or '(', found:…

若要在筛选器中执行此操作,必须将“%”(%)加倍:

^<HOST>.*GET.*\\\"%%20and%%20\\\"x\\\"%%3D\\\"x.* 200.*$

虽然这会使所需的命中作为一个过滤器运行,但没有一个通过fail2ban-regex运行。

正如安德烈在下面建议的那样,我尝试了\\\\,但是这在fail2ban-regex中没有结果。

因此,由于这似乎是差异行为,我将把它作为一个bug。

EN

回答 1

Stack Overflow用户

发布于 2020-07-10 13:05:28

根据Python自己的站点,单字反斜杠"\"必须编写为"\\\\",而且没有提到%

正则表达式使用反斜杠字符('')来指示特殊形式,或者允许使用特殊字符而不调用它们的特殊意义。这与Python在字符串文本中为相同目的使用相同字符的用法相冲突;例如,要匹配一个文本反斜杠,可能必须将“\”写成模式字符串,因为正则表达式必须是\,并且每个反斜杠必须表示为\在常规Python字符串文本中。

我只想说:

代码语言:javascript
运行
复制
failregex = (?i)^<HOST> -.*"(GET|POST|HEAD|PUT).*20and.*3d.*$

.*将匹配任何在任何方式之间的任何东西,而(?i)使整个正则表达式不区分大小写。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62824962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档