如何在varnish vcl中转义双引号

时间:2017-05-15 15:43:05

标签: varnish vcl varnish-vcl varnish-4

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

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

一切都有效,除了双引号&#34; 我试过正则表达式:

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

所有这些都不能使用&#34; varnishd -C -f default.vcl&#34; 我目前在使用varnish-4.1.1 有谁知道怎么逃避&#34;正确?

3 个答案:

答案 0 :(得分:3)

怎么样:

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

Regex test

答案 1 :(得分:1)

%22会在Varnish VCL中引用的字符串中给出双引号

答案 2 :(得分:1)

%22为我工作,我需要它在Fastly界面中创建cookie函数

"location_data={%22geo.continent_code%22:%22"client.geo.continent_code"%22,%22geo.country_code%22:%22"client.geo.country_code"%22,%22geo.city.ascii%22:%22"client.geo.city.ascii"%22,%22geo.postal_code%22:%22"client.geo.postal_code"%22};Path=/"