[wp-trac] [WordPress Trac] #46301: Customizer iframe warning

WordPress Trac noreply at wordpress.org
Thu Jan 30 08:45:06 UTC 2025


#46301: Customizer iframe warning
-------------------------------+------------------------------
 Reporter:  mensmaximus        |       Owner:  (none)
     Type:  defect (bug)       |      Status:  new
 Priority:  normal             |   Milestone:  Awaiting Review
Component:  Customize          |     Version:  5.1
 Severity:  minor              |  Resolution:
 Keywords:  reporter-feedback  |     Focuses:
-------------------------------+------------------------------

Comment (by ermiuyo):

 Replying to [comment:5 ermiuyo]:
 > Replying to [comment:4 ermiuyo]:
 > > Replying to [comment:3 ermiuyo]:
 > > > Replying to [comment:2 ermiuyo]:
 > > > > The warning in the browser console is triggered because the
 preview iframe inside the WordPress Customizer (customize.php) is being
 loaded with both allow-scripts and allow-same-origin in its sandbox
 attribute. This combination allows scripts within the iframe to break out
 of the sandbox, which is a security concern. Additionally, the Content
 Security Policy (CSP) message indicates that x-frame-options is being
 ignored due to the presence of frame-ancestors.
 > > > >
 > > >
 > > > To confirm the issue, inspect the iframe element inside
 customize.php by using Developer Tools (right-click → Inspect). Look for
 the sandbox attribute inside the iframe. If it includes allow-scripts and
 allow-same-origin, that is the reason for the warning.
 > > >
 > > > Additionally, check the response headers of the previewed site using
 the Network tab to verify CSP and X-Frame-Options settings.
 > >
 > > Since WordPress controls the sandbox settings for security purposes,
 you may need to override or modify how the iframe loads. Try adding the
 following snippet to your theme’s functions.php to modify the Customizer
 behavior:
 > >
 > >
 > > {{{
 > > function remove_customizer_sandbox() {
 > >     add_filter('wp_customize_controls_print_scripts', function () {
 > >         echo '<script>
 > >             document.addEventListener("DOMContentLoaded", function() {
 > >                 let previewFrame = document.getElementById("customize-
 preview");
 > >                 if (previewFrame) {
 > >                     previewFrame.removeAttribute("sandbox");
 > >                 }
 > >             });
 > >         </script>';
 > >     });
 > > }
 > > add_action('customize_register', 'remove_customizer_sandbox');
 > > }}}
 > >
 >
 > If the issue persists, check the site's CSP settings. If frame-ancestors
 is defined, it overrides X-Frame-Options. Update the site's CSP headers to
 properly allow the WordPress Customizer:
 > If using .htaccess, add:
 >
 > {{{
 > Header set Content-Security-Policy "frame-ancestors 'self'
 https://yourwebsite.com;"
 >
 > }}}
 >
 > If using Nginx, modify the configuration:
 >
 > {{{
 > add_header Content-Security-Policy "frame-ancestors 'self'
 https://yourwebsite.com;" always;
 >
 > }}}
 >
 >

 After implementing the changes:

 1. Clear cache in WordPress and the browser.
 2. Reload the Customizer and check the browser console for warnings.
 3. Inspect the iframe again to ensure the sandboxing issue is resolved.
 4. If the issue persists, try debugging with a minimal theme or disabling
 conflicting plugins.

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/46301#comment:6>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list