Boris Burgstaller
Boris Burgstaller

Reputation: 153

How to escape a double quote in varnish vcl

In vcl_recv I'm trying to send a 403 to requests that contain the following characters in the url: ",',<,>,(, and )

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

everything works except the double quote " I tried regex like:

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

All of them do not compile with "varnishd -C -f default.vcl" I'm currently on varnish-4.1.1 Does anyone know how to escape the " correctly?

Upvotes: 4

Views: 2479

Answers (2)

Vinnie James
Vinnie James

Reputation: 6062

%22 will give you a double quote within your quoted string in Varnish VCL

Upvotes: 2

Danila Vershinin
Danila Vershinin

Reputation: 9875

How about:

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

Regex test

Upvotes: 7

Related Questions