4

在 vcl_recv 中,我尝试向 url 中包含以下字符的请求发送 403:",',<,>,(, and )

if(req.url ~ "[\'\<\>()].*\.html" ) {
  return (synth(403, "Forbidden"));
}

除了双引号“我尝试了正则表达式,一切正常:

"[\"\'\<\>()].*\.html"
"[\\"\'\<\>()].*\.html"
"[%22\'\<\>()].*\.html"
"[x22\'\<\>()].*\.html"

它们都不能用“varnishd -C -f default.vcl”编译我目前在 varnish-4.1.1 有谁知道如何正确转义“?

4

2 回答 2

6

怎么样:

if (req.url ~ "[\x27<>()\x22]") {
    return (synth(403, "Forbidden"));
}

正则表达式测试

于 2017-05-15T18:16:41.317 回答
2

%22将在 Varnish VCL 中的引用字符串中给你一个双引号

于 2018-03-29T21:00:35.093 回答