๐Ÿ›ก๏ธ Connection Allowlist is active โ€” unlisted destinations are refused and reported
โ† All demos ยท Connection Allowlist Demo 4 of 4

Redirect Laundering

A permitted destination forwards to one that is not. Blocking redirects by default closes the obvious way around a list.

Requires Chrome 152 or later. Other browsers ignore the header, so both modes will behave the same.

The redirect is not followed to an unlisted destination

Going the long way round

/api/redirect/ is on this origin, so it is permitted. It sends a 302 to evil-cyber-hacker.com, which is not.

๐Ÿ›ก๏ธ The redirect is refused. The first hop is on this origin, so the request is sent. The destination it forwards to is not on the list, and because redirects defaults to block the browser will not follow it.
Why the default is block

A list that permits an origin but not where that origin sends you is not really a list. Any permitted destination under an attacker's influence — a compromised vendor, an open redirect on a domain you trust — becomes a way to reach anything.

You can opt into redirects=allow if a destination you rely on genuinely redirects, but that is a decision to make deliberately, and the reports tell you when you need to make it.

Connection Allowlist header sent with this page
Connection-Allowlist: (response-origin); report-to=default
โ† Demo 3 All demos โ†’