regex - Varnish modsecurity规则语法错误

标签 regex security varnish

我正在尝试在Varnish(varnish-6.0.3)中运行modsecurity CRS,但是与规则932106、932150、932105和932100-> RCE相关,我遇到了问题。 VCC编译器抛出语法错误(例如[rule 932106]):

   if(req.url ~ "(?:;|\{|\||\|\||&|&&|\n|\r|\$\(|\$\(\(|`|\${|<\(|>\(|\(\s*\))\s*(?:{|\s*\(\s*|\w+=(?:[^\s]*|\$.*|\$.*|<.*|>.*|\'.*\'|\".*\")\s+|!\s*|\$)*\s*(?:'|\")*(?:[\?\*\[\]\(\)\-\|+\w'\"\.\/\\\\]+\/)?[\\\\'\"]*(?:(?:(?:a[\\\\'\"]*p[\\\\'\"]*t[\\\\'\"]*i[\\\\'\"]*t[\\\\'\"]*u[\\\\'\"]*d|u[\\\\'\"]*p[\\\\'\"]*2[\\\\'\"]*d[\\\\'\"]*a[\\\\'\"]*t)[\\\\'\"]*e|d[\\\\'\"]*n[\\\\'\"]*f|v[\\\\'\"]*i)[\\\\'\"]*(?:\s|<|>).*|p[\\\\'\"]*(?:a[\\\\'\"]*c[\\\\'\"]*m[\\\\'\"]*a[\\\\'\"]*n[\\\\'\"]*(?:\s|<|>).*|w[\\\\'\"]*d|s)|w[\\\\'\"]*(?:(?:\s|<|>).*|h[\\\\'\"]*o))\b{
------------------------------------------------------------------------------------------------------------------------------------------#-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

没有任何进一步的解释,这意味着语法错误在“\”之内,这有点令人惊讶,因为“char被转义了。

以前有没有人遇到过类似的问题,或者不知道如何解决?

规则集中的正则表达式未经修改,是CRS(v3.0)中稳定的正则表达式。

最佳答案

我建议您使用 long strings 来降低逃避问题的风险。

这是一个长字符串在 Varnish 中的样子:

{"Some string, including "double quotes""}

这样,您就不需要转义双引号,也许这会解决您的问题。

关于regex - Varnish modsecurity规则语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61224122/

相关文章:

c# - 应该使用什么来代替 UseGoogleAuthentication 方法 (IAppBuilder)?

kubernetes - 要求BAN要求的Http 400

javascript - 需要正则表达式来验证时间格式

r - 使用 R 中的正则表达式将所有匹配项提取到新列

c# - 在 C# 中,获取两个单词之间的单词但排除边界的正确正则表达式是什么?

asp.net - 我应该如何将评论存储在数据库中,以便我可以有效地将它们作为 html 文本显示在页面上?

c# - 标签的正则表达式匹配

security - 是否有支持或反对频繁更改密码的研究?

docker - 如何在 docker traefik 中终止 SSL 以使用 Varnish

header - 将值追加到beresp中的set-cookie header 中。在Varnish 2.1中