Skip to content

Commit d3c2d4e

Browse files
author
Yevhen Miroshnychenko
committed
MAGETWO-82057: Varnish/Fastly - Magento can cache & return cached cart and similar sensitive data
1 parent 1f9277a commit d3c2d4e

File tree

2 files changed

+35
-29
lines changed

2 files changed

+35
-29
lines changed

app/code/Magento/PageCache/etc/varnish4.vcl

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -145,28 +145,31 @@ sub vcl_backend_response {
145145
set beresp.http.X-Magento-Cache-Control = beresp.http.Cache-Control;
146146
}
147147

148+
# cache only successfully responses and 404s
149+
if (beresp.status != 200 && beresp.status != 404) {
150+
set beresp.ttl = 0s;
151+
set beresp.uncacheable = true;
152+
return (deliver);
153+
} elsif (beresp.http.Cache-Control ~ "private") {
154+
set beresp.uncacheable = true;
155+
set beresp.ttl = 86400s;
156+
return (deliver);
157+
}
158+
148159
# validate if we need to cache it and prevent from setting cookie
149160
if (beresp.ttl > 0s && (bereq.method == "GET" || bereq.method == "HEAD")) {
150161
unset beresp.http.set-cookie;
151162
}
152163

153-
# cache only successfully responses and 404s
154-
if (beresp.status != 200 && beresp.status != 404) {
155-
set beresp.ttl = 0s;
156-
set beresp.uncacheable = true;
157-
} elseif (beresp.ttl <= 0s ||
158-
beresp.http.Surrogate-control ~ "no-store" ||
159-
(!beresp.http.Surrogate-Control &&
160-
beresp.http.Cache-Control ~ "no-cache|no-store" ||
161-
beresp.http.Vary == "*")
162-
) {
163-
# If page is not cacheable then bypass varnish for 2 minutes as Hit-For-Pass
164-
# Mark as Hit-For-Pass for the next 2 minutes
164+
# If page is not cacheable then bypass varnish for 2 minutes as Hit-For-Pass
165+
if (beresp.ttl <= 0s ||
166+
beresp.http.Surrogate-control ~ "no-store" ||
167+
(!beresp.http.Surrogate-Control &&
168+
beresp.http.Cache-Control ~ "no-cache|no-store") ||
169+
beresp.http.Vary == "*") {
170+
# Mark as Hit-For-Pass for the next 2 minutes
165171
set beresp.ttl = 120s;
166172
set beresp.uncacheable = true;
167-
} elsif (beresp.http.Cache-Control ~ "private") {
168-
set beresp.uncacheable = true;
169-
set beresp.ttl = 86400s;
170173
}
171174

172175
return (deliver);

app/code/Magento/PageCache/etc/varnish5.vcl

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -146,28 +146,31 @@ sub vcl_backend_response {
146146
set beresp.http.X-Magento-Cache-Control = beresp.http.Cache-Control;
147147
}
148148

149+
# cache only successfully responses and 404s
150+
if (beresp.status != 200 && beresp.status != 404) {
151+
set beresp.ttl = 0s;
152+
set beresp.uncacheable = true;
153+
return (deliver);
154+
} elsif (beresp.http.Cache-Control ~ "private") {
155+
set beresp.uncacheable = true;
156+
set beresp.ttl = 86400s;
157+
return (deliver);
158+
}
159+
149160
# validate if we need to cache it and prevent from setting cookie
150161
if (beresp.ttl > 0s && (bereq.method == "GET" || bereq.method == "HEAD")) {
151162
unset beresp.http.set-cookie;
152163
}
153164

154-
# cache only successfully responses and 404s
155-
if (beresp.status != 200 && beresp.status != 404) {
156-
set beresp.ttl = 0s;
157-
set beresp.uncacheable = true;
158-
} elseif (beresp.ttl <= 0s ||
159-
beresp.http.Surrogate-control ~ "no-store" ||
160-
(!beresp.http.Surrogate-Control &&
161-
beresp.http.Cache-Control ~ "no-cache|no-store" ||
162-
beresp.http.Vary == "*")
163-
) {
164-
# If page is not cacheable then bypass varnish for 2 minutes as Hit-For-Pass
165+
# If page is not cacheable then bypass varnish for 2 minutes as Hit-For-Pass
166+
if (beresp.ttl <= 0s ||
167+
beresp.http.Surrogate-control ~ "no-store" ||
168+
(!beresp.http.Surrogate-Control &&
169+
beresp.http.Cache-Control ~ "no-cache|no-store") ||
170+
beresp.http.Vary == "*") {
165171
# Mark as Hit-For-Pass for the next 2 minutes
166172
set beresp.ttl = 120s;
167173
set beresp.uncacheable = true;
168-
} elsif (beresp.http.Cache-Control ~ "private") {
169-
set beresp.uncacheable = true;
170-
set beresp.ttl = 86400s;
171174
}
172175

173176
return (deliver);

0 commit comments

Comments
 (0)