v150 · Security · Rendering

Sandbox Filter Test

Apply CSS filters to a container that holds both a same-origin frame and a sandboxed frame. Chrome 150 blocks SVG filters (like url(#displace)) on cross-origin and sandboxed iframes — CSS shorthand filters like blur() still apply. See which filters reach each frame.

Detecting browser version…
Same-origin filter applies ✓
srcdoc without sandbox inherits the page origin.
Opaque-origin data: SVG filter blocked ✗
data: iframes get a unique opaque origin, so they exercise the restricted-frame path.
Sandboxed / restricted SVG filter blocked ✗
sandbox creates a restricted browsing context even when the document markup is local.

Filter × frame type matrix

filter type same-origin iframe cross-origin iframe sandboxed iframe
CSS shorthand (blur, grayscale, …) applies ✓ applies ✓ applies ✓
SVG filter via url(#id) applies ✓ blocked ✗ (Chrome 150) blocked ✗ (Chrome 150)
SVG filter via url(#id) on plugin (PDF) blocked ✗ (Chrome 150) blocked ✗ (Chrome 150) blocked ✗ (Chrome 150)

why SVG filters were blocked

SVG filters — particularly <feDisplacementMap> — could visually distort cross-origin iframes, making phishing overlays and clickjacking attacks harder to detect. The lyra.horse demo in 2024 showed how a displacement filter on an embedded bank iframe could shift the frame content to make a malicious overlay pixel-perfect. Chrome 150 blocks all SVG filter effects at the boundary of cross-origin and sandboxed frames. CSS shorthand filters (blur(), brightness(), etc.) that can't be used for pixel-accurate manipulation are unaffected.

<!-- Safe: blur() on cross-origin iframe is fine -->
<div style="filter: blur(4px)">
  <iframe src="https://other-origin.example/"></iframe>
</div>

<!-- Blocked: SVG filter on cross-origin iframe (Chrome 150) -->
<div style="filter: url(#my-displacement)">
  <iframe src="https://other-origin.example/"></iframe>
  <!-- SVG filter is stripped; iframe renders unfiltered -->
</div>

see also