<?xml version="1.0" encoding="UTF-8" ?><!-- generator=Zoho Sites --><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><atom:link href="https://www.gtconsult.com/blogs/tag/csp-enforcement/feed" rel="self" type="application/rss+xml"/><title>GTconsult - Blog #CSP Enforcement</title><description>GTconsult - Blog #CSP Enforcement</description><link>https://www.gtconsult.com/blogs/tag/csp-enforcement</link><lastBuildDate>Wed, 01 Apr 2026 08:41:36 -0700</lastBuildDate><generator>http://zoho.com/sites/</generator><item><title><![CDATA[SharePoint CSP: Lessons Learned After Enforcement]]></title><link>https://www.gtconsult.com/blogs/post/sharepoint-csp-lessons-learned-after-enforcement</link><description><![CDATA[<img align="left" hspace="5" src="https://www.gtconsult.com/Blog Site/ff.png"/>CSP enforcement went live 1 March 2026. Here's what actually broke, what held up fine, and what every SharePoint environment can learn from the aftermath.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_Q6SZuOenRqiDkCfrsU0N4Q" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_NmnIylMfQPqheGXhzNLHMQ" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_L_ax5l0hR3yT5B--e0CSeA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_uUa3_U0GSC2E3hsu6cj1SA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center zptext-align-mobile-center zptext-align-tablet-center " data-editor="true"><p><span><span>1 March came and went. Here's what actually broke, what held up fine, and what everyone who was &quot;planning to deal with it later&quot; is dealing with right now.</span></span></p></div>
</div><div data-element-id="elm_YoFmLtA41Kja8z_ERT5vNQ" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_YoFmLtA41Kja8z_ERT5vNQ"] .zpimage-container figure img { width: 754px !important ; height: 424px !important ; } } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-custom zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Site/ff.png" size="custom" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_FlA9Xv0yH7eALNPgQEOKwQ" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p><span><span>Microsoft's SharePoint Online Content Security Policy enforcement went live on 1 March 2026. For teams that had prepared, audited their violations, refactored inline scripts, registered trusted sources: it was a non-event. For those who hadn't, it was a rough Monday morning. This post captures what we've seen in the aftermath: what broke, what didn't, and what the experience teaches us about managing security changes in a modern SharePoint environment.</span></span></p></div>
</div></div></div></div></div><div data-element-id="elm_4Uc-2ob9fuW9PZ5xgrWcSQ" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_Q7luIxAdNeysCMZzJPxl0A" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column="false"><style type="text/css"></style><div data-element-id="elm_b5alVDLHoQH9iRjLnTBaAg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_CSMKF17qOBxt4w6xsSzWjQ" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><strong>What Actually Broke</strong></h3></div>
</div></div></div></div><div data-element-id="elm_5vbdPeSXnUrmXkJhoL_wwg" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_SKEtigDZdosX7RqEGAx_vQ" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_zsDv8xZ2p_HFvEMhDx8Omw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-4 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_GUepag85OQ-ITOevYXbZYg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_GUepag85OQ-ITOevYXbZYg"].zpelem-text { border-style:solid; border-color:#E21D1D !important; border-block-start-width:3px; border-inline-end-width:0px; border-block-end-width:0px; border-inline-start-width:0px; } </style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p><span style="color:rgb(180, 45, 45);"><br/></span></p><p><span style="color:rgb(180, 45, 45);">Commonly Affected</span></p></div>
</div><div data-element-id="elm_5q7oWbhJPBnO9i3S7CJIhA" data-element-type="imageheadingtext" class="zpelement zpelem-imageheadingtext "><style> @media (min-width: 992px) { [data-element-id="elm_5q7oWbhJPBnO9i3S7CJIhA"] .zpimageheadingtext-container figure img { width: 52px !important ; height: 52px !important ; } } @media (max-width: 767px) { [data-element-id="elm_5q7oWbhJPBnO9i3S7CJIhA"] .zpimageheadingtext-container figure img { width:50px ; height:50px ; } } </style><div data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimageheadingtext-container zpimage-with-text-container zpimage-align-left zpimage-tablet-align-left zpimage-mobile-align-left zpimage-size-custom zpimage-tablet-fallback-medium zpimage-mobile-fallback-medium zpimage-text-seperate-line "><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Site/23.png" width="50" height="50" loading="lazy" size="custom" data-lightbox="false"/></picture></span></figure><div class="zpimage-headingtext-container"><h4 class="zpimage-heading zpimage-text-align-left zpimage-text-align-mobile-left zpimage-text-align-tablet-left" data-editor="true"><span>Inline Scripts in Content Editor Web Parts</span><br/>​</h4><div class="zpimage-text zpimage-text-align-left zpimage-text-align-mobile-left zpimage-text-align-tablet-left " data-editor="true"><p><span><span>Classic content editor web parts with embedded JavaScript were one of the most common failure points. Many organisations had years-old scripts sitting in these parts that nobody had touched, and nobody realised were inline until they stopped working.</span></span></p></div>
</div></div></div></div><div data-element-id="elm_yPXKyKdYbIj-uxTXpO71gg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-4 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_7bCNpHgoS0Bn1euXrHX3XA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_7bCNpHgoS0Bn1euXrHX3XA"].zpelem-text { border-style:solid; border-color:#E21D1D !important; border-block-start-width:3px; border-inline-end-width:0px; border-block-end-width:0px; border-inline-start-width:0px; } </style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p><span style="color:rgb(180, 45, 45);"><br/></span></p><p><span style="color:rgb(180, 45, 45);">Commonly Affected</span></p></div>
</div><div data-element-id="elm_VsLjvQMP9aFZOSOjT2qZ2Q" data-element-type="imageheadingtext" class="zpelement zpelem-imageheadingtext "><style> @media (min-width: 992px) { [data-element-id="elm_VsLjvQMP9aFZOSOjT2qZ2Q"] .zpimageheadingtext-container figure img { width: 50px !important ; height: 50px !important ; } } @media (max-width: 767px) { [data-element-id="elm_VsLjvQMP9aFZOSOjT2qZ2Q"] .zpimageheadingtext-container figure img { width:50px ; height:50px ; } } </style><div data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimageheadingtext-container zpimage-with-text-container zpimage-align-left zpimage-tablet-align-left zpimage-mobile-align-left zpimage-size-custom zpimage-tablet-fallback-medium zpimage-mobile-fallback-medium zpimage-text-seperate-line "><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Site/24.png" width="50" height="50" loading="lazy" size="custom" data-lightbox="false"/></picture></span></figure><div class="zpimage-headingtext-container"><h4 class="zpimage-heading zpimage-text-align-left zpimage-text-align-mobile-left zpimage-text-align-tablet-left" data-editor="true"><span>Third-Party Integrations Using Dynamic Injection<br/></span></h4><div class="zpimage-text zpimage-text-align-left zpimage-text-align-mobile-left zpimage-text-align-tablet-left " data-editor="true"><p><span><span>Analytics tools, chatbots, CRM connectors, and similar third-party solutions that inject scripts dynamically at runtime without pre-registration were blocked. Some vendors had updated their SharePoint integrations ahead of enforcement; others hadn't.</span></span></p></div>
</div></div></div></div><div data-element-id="elm_qInmHVpg5hqcmory-Of-yA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-4 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_kAdd6MxMSynBnsjmaJJZEw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_kAdd6MxMSynBnsjmaJJZEw"].zpelem-text { border-style:solid; border-color:#F1C40F !important; border-block-start-width:3px; border-inline-end-width:0px; border-block-end-width:0px; border-inline-start-width:0px; } </style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p><span style="color:rgb(180, 45, 45);"><br/></span></p><p><span style="color:rgb(241, 196, 15);">Partially Affected</span></p></div>
</div><div data-element-id="elm_mRRLIBsJvobvX52pk-4DEg" data-element-type="imageheadingtext" class="zpelement zpelem-imageheadingtext "><style> @media (min-width: 992px) { [data-element-id="elm_mRRLIBsJvobvX52pk-4DEg"] .zpimageheadingtext-container figure img { width: 47px !important ; height: 47px !important ; } } @media (max-width: 767px) { [data-element-id="elm_mRRLIBsJvobvX52pk-4DEg"] .zpimageheadingtext-container figure img { width:50px ; height:50px ; } } </style><div data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimageheadingtext-container zpimage-with-text-container zpimage-align-left zpimage-tablet-align-left zpimage-mobile-align-left zpimage-size-custom zpimage-tablet-fallback-medium zpimage-mobile-fallback-medium zpimage-text-seperate-line "><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Site/25.png" width="50" height="50" loading="lazy" size="custom" data-lightbox="false"/></picture></span></figure><div class="zpimage-headingtext-container"><h4 class="zpimage-heading zpimage-text-align-left zpimage-text-align-mobile-left zpimage-text-align-tablet-left" data-editor="true"><span>Custom SPFx Web Parts with Dynamic Loading<br/></span></h4><div class="zpimage-text zpimage-text-align-left zpimage-text-align-mobile-left zpimage-text-align-tablet-left " data-editor="true"><p><span><span>Web parts using&nbsp; </span><code>SPComponentLoader.loadScript()</code><span>&nbsp;to pull in external libraries at runtime worked fine if those sources were pre-registered in Trusted Script Sources, and broke if they weren't. The split outcome here caught some teams off guard who assumed their SPFx solutions were automatically safe.</span></span></p></div>
</div></div></div></div></div><div data-element-id="elm_hV5ZFuicEXZdQjCvwHj7hw" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_SLhKS1VIn_LnXlY2zK91Iw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_SEFA-LZ5-Gpb0wrHC537uw" data-element-type="spacer" class="zpelement zpelem-spacer "><style> div[data-element-id="elm_SEFA-LZ5-Gpb0wrHC537uw"] div.zpspacer { height:33px; } @media (max-width: 768px) { div[data-element-id="elm_SEFA-LZ5-Gpb0wrHC537uw"] div.zpspacer { height:calc(33px / 3); } } </style><div class="zpspacer " data-height="33"></div>
</div></div></div><div data-element-id="elm_avkD92zJNqVyFjTKCqzluQ" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start " data-equal-column="false"><style type="text/css"></style><div data-element-id="elm_l3PJoMyQSrujx2V-pERbAw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-4 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_Xf6kvrjtppshCMGxzixi9g" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Xf6kvrjtppshCMGxzixi9g"].zpelem-text { border-style:solid; border-color:#A6CE39 !important; border-block-start-width:3px; border-inline-end-width:0px; border-block-end-width:0px; border-inline-start-width:0px; } </style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p><span style="color:rgb(180, 45, 45);"><br/></span></p><p><span style="color:rgb(166, 206, 57);">Unaffected</span></p></div>
</div><div data-element-id="elm_micSr6onUofH0l6Xh_buSA" data-element-type="imageheadingtext" class="zpelement zpelem-imageheadingtext "><style> @media (min-width: 992px) { [data-element-id="elm_micSr6onUofH0l6Xh_buSA"] .zpimageheadingtext-container figure img { width: 52px !important ; height: 52px !important ; } } @media (max-width: 767px) { [data-element-id="elm_micSr6onUofH0l6Xh_buSA"] .zpimageheadingtext-container figure img { width:50px ; height:50px ; } } </style><div data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimageheadingtext-container zpimage-with-text-container zpimage-align-left zpimage-tablet-align-left zpimage-mobile-align-left zpimage-size-custom zpimage-tablet-fallback-medium zpimage-mobile-fallback-medium zpimage-text-seperate-line "><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Site/26.png" width="50" height="50" loading="lazy" size="custom" data-lightbox="false"/></picture></span></figure><div class="zpimage-headingtext-container"><h4 class="zpimage-heading zpimage-text-align-left zpimage-text-align-mobile-left zpimage-text-align-tablet-left" data-editor="true"><span>Standard SPFx Bundles via cdnBasePath or externals<br/></span></h4><div class="zpimage-text zpimage-text-align-left zpimage-text-align-mobile-left zpimage-text-align-tablet-left " data-editor="true"><p><span><span>Solutions deployed through proper SPFx packaging, bundles referenced via&nbsp;<span style="background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);font-family:&quot;Courier New&quot;, monospace;">&nbsp;</span></span><code style="background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);font-family:&quot;Courier New&quot;, monospace;">cdnBasePath&nbsp;</code><span>&nbsp;or external libraries declared in&nbsp;<span style="background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);font-family:&quot;Courier New&quot;, monospace;">&nbsp;</span></span><code style="background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);font-family:&quot;Courier New&quot;, monospace;">config.json&nbsp;</code><span>, were automatically added to Trusted Script Sources on installation and were entirely unaffected by enforcement.</span></span></p></div>
</div></div></div></div><div data-element-id="elm_RWoaloQBiSIXdiArZcHRbQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-4 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_-_4Ze6htLK7-1apUCiyN-Q" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_-_4Ze6htLK7-1apUCiyN-Q"].zpelem-text { border-style:solid; border-color:#A6CE39 !important; border-block-start-width:3px; border-inline-end-width:0px; border-block-end-width:0px; border-inline-start-width:0px; } </style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p><span style="color:rgb(180, 45, 45);"><br/></span></p><p><span style="color:rgb(166, 206, 57);">Unaffected</span></p></div>
</div><div data-element-id="elm_e3HEFndZRDUhMwa6Tc1YcQ" data-element-type="imageheadingtext" class="zpelement zpelem-imageheadingtext "><style> @media (min-width: 992px) { [data-element-id="elm_e3HEFndZRDUhMwa6Tc1YcQ"] .zpimageheadingtext-container figure img { width: 50px !important ; height: 50px !important ; } } @media (max-width: 767px) { [data-element-id="elm_e3HEFndZRDUhMwa6Tc1YcQ"] .zpimageheadingtext-container figure img { width:50px ; height:50px ; } } </style><div data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimageheadingtext-container zpimage-with-text-container zpimage-align-left zpimage-tablet-align-left zpimage-mobile-align-left zpimage-size-custom zpimage-tablet-fallback-medium zpimage-mobile-fallback-medium zpimage-text-seperate-line "><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Site/27.png" width="50" height="50" loading="lazy" size="custom" data-lightbox="false"/></picture></span></figure><div class="zpimage-headingtext-container"><h4 class="zpimage-heading zpimage-text-align-left zpimage-text-align-mobile-left zpimage-text-align-tablet-left" data-editor="true"><span>Classic SharePoint Pages</span><br/>​</h4><div class="zpimage-text zpimage-text-align-left zpimage-text-align-mobile-left zpimage-text-align-tablet-left " data-editor="true"><p><span><span>CSP enforcement only applies to modern SharePoint pages. Organisations still running classic team sites or publishing sites were not affected, though the long-term trajectory of classic SharePoint remains what it is.</span></span></p></div>
</div></div></div></div></div><div data-element-id="elm_H0GKtjD1tr9ygt2yiS2PnQ" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column="false"><style type="text/css"></style><div data-element-id="elm_r9SiVr8xz1BIoDk5rpUHaw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_yOGUyNOtBU-b-qARTuOKkQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_yOGUyNOtBU-b-qARTuOKkQ"].zpelem-text { background-color:#ECF0F1; background-image:unset; border-style:solid; border-color:#A6CE39 !important; border-block-start-width:0px; border-inline-end-width:0px; border-block-end-width:0px; border-inline-start-width:5px; } </style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><p></p></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><span style="color:rgb(166, 206, 57);font-size:12px;"></span></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><div><span style="margin-bottom:6px;font-weight:700;color:rgb(166, 206, 57);"><br/></span></div><div><span style="margin-bottom:6px;font-weight:700;color:rgb(166, 206, 57);"></span></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><div>Still running classic SharePoint? CSP is one of many reasons the clock is ticking. Our Support Manager Barend Olivier walks through exactly what's at stake and how to move forward in our on-demand webinar, Migration &amp; Modernization: From Legacy to Modern.</div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><span><span></span></span></blockquote><div><span><span><br/></span></span></div></div>
</div><div data-element-id="elm_x0sevVGayWLJKEfb_re6sQ" data-element-type="video" class="zpelement zpelem-video "><style type="text/css"> @media (max-width: 767px) { [data-element-id="elm_x0sevVGayWLJKEfb_re6sQ"].zpelem-video iframe.zpvideo{ width:560px !important; height:315px !important; } } @media all and (min-width: 768px) and (max-width:991px){ [data-element-id="elm_x0sevVGayWLJKEfb_re6sQ"].zpelem-video iframe.zpvideo{ width:560px !important; height:315px !important; } } </style><div class="zpvideo-container zpiframe-align-center zpiframe-mobile-align-center zpiframe-tablet-align-center"><iframe class="zpvideo " width="560" height="315" src="https://www.youtube.com/embed/X3b2vhnFsPI?si=11oPQW0TvV7aJPv5" frameborder="0" allowfullscreen></iframe></div>
</div></div></div></div></div><div data-element-id="elm_wujIyeaIWe3HHGkdkbi7uA" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_Gy79vhUoZVk4Tvk9DoiKDw" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column="false"><style type="text/css"></style><div data-element-id="elm_2lynVZF7SbwzbsK_ets-lQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_8tp7cp-NYNJRiECQ6P7FlA" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><strong>The Common Thread in Failures</strong></h3></div>
<div data-element-id="elm_Fhxzjl2tFZYbCytcJt6sbA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div><p style="margin-bottom:20px;">Looking across the common failure patterns, there's a single theme:&nbsp;<strong>legacy script patterns that nobody had revisited in years</strong>. The solutions that broke were rarely recently built, they were older integrations, older web parts, scripts embedded when SharePoint was configured years ago and then forgotten.</p><p style="margin-bottom:20px;">CSP enforcement didn't create new problems; it surfaced old ones. That's actually the point. The report-only window from late 2025 through 28 February was designed exactly for this: a chance to audit before enforcement hit. Teams that used that window had nothing to worry about on 1 March. Teams that didn't are doing triage now.</p></div><p></p></div>
</div><div data-element-id="elm_SJMHmb6Sfh5sCO4bCl5HUw" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><strong><span>The Fix Is Usually Simpler Than It Sounds</span></strong></h3></div>
<div data-element-id="elm_f2XQpFGAV_2w3sf4yeyngw" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div><div>One of the more reassuring findings: for most organisations, the actual remediation work is not as complex as it sounds once you know what you're dealing with. The common fixes are:</div><div><br/></div></div><p></p><ul><li>Inline scripts: Extract into a&nbsp;<span style="background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);font-family:&quot;Courier New&quot;, monospace;"> .js file </span>, host it somewhere trusted, update the reference. An afternoon of work in most cases.</li><li>Untrusted external sources: Add the domain to Trusted Script Sources in SharePoint Admin Center. A few minutes per source.</li><li>Third-party vendor tools: Contact the vendor. Most major vendors had CSP-compliant updates available before enforcement, it's usually a version upgrade.</li></ul><div><div></div><br/><div>The difficulty isn't the fix itself. It's the discovery: knowing which scripts exist, where they live, and what they load. That's why the Purview audit log is so valuable, run a search for &quot;Violated Content Security Policy&quot; to get the full map.</div></div></div>
</div><div data-element-id="elm_OL9VoIPz5uQOqdghTodhTw" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><strong><span><span>What This Tells Us About Security Governance</span></span></strong></h3></div>
<div data-element-id="elm_5nmpUES4L_exdqK82aUJ7A" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_5nmpUES4L_exdqK82aUJ7A"] .zpimagetext-container figure img { width: 407px !important ; height: 271px !important ; } } </style><div data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimagetext-container zpimage-with-text-container zpimage-align-left zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-custom zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
            type:fullscreen,
            theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Site/laptop-with-antivirus-shield-hologram-web-safety-2026-03-26-05-09-23-utc.jpg" size="custom" data-lightbox="true"/></picture></span></figure><div class="zpimage-text zpimage-text-align-left zpimage-text-align-mobile-left zpimage-text-align-tablet-left " data-editor="true"><p></p><div><p style="margin-bottom:20px;">CSP enforcement is a useful lens on a broader question: how well do organisations actually know what JavaScript is running in their SharePoint environment? For many, the honest answer before 1 March was &quot;not very well.&quot; Scripts accumulate over years of SharePoint growth, solutions built by people who've left, integrations set up for projects long since finished, vendor tools added during evaluations that never quite got removed.</p><p style="margin-bottom:20px;">CSP enforcement forced an audit that should have been happening on an ongoing basis. The silver lining: teams that went through the remediation process now have a much cleaner, better-documented picture of their SharePoint script landscape than they did before.</p></div><p></p></div>
</div></div><div data-element-id="elm_7jeMlHaduwfau0u19N-Hcg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_7jeMlHaduwfau0u19N-Hcg"].zpelem-text { background-color:#ECF0F1; background-image:unset; border-style:solid; border-color:#A6CE39 !important; border-block-start-width:0px; border-inline-end-width:0px; border-block-end-width:0px; border-inline-start-width:5px; } </style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><p></p></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><span style="color:rgb(166, 206, 57);font-size:12px;"></span></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><div><span style="margin-bottom:6px;font-weight:700;color:rgb(166, 206, 57);"><br/></span></div><div><span style="margin-bottom:6px;font-weight:700;color:rgb(166, 206, 57);"></span></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><div><span style="margin-bottom:8px;font-weight:600;color:rgb(166, 206, 57);">If You're Still Cleaning Up</span></div></blockquote><div><div><br/></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><span><span></span></span></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><span><span>Check your Purview audit log, work through violations methodically, and use&nbsp;<span style="background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);font-family:&quot;Courier New&quot;, monospace;">&nbsp;</span></span><code style="background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);font-family:&quot;Courier New&quot;, monospace;">?csp=enforce</code><span><span style="background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);font-family:&quot;Courier New&quot;, monospace;">&nbsp;</span> on individual pages to verify fixes. If you're on the 90-day delay, enforcement hits&nbsp;</span><a href="https://www.claudeusercontent.com/?domain=claude.ai&amp;parentOrigin=https%3A%2F%2Fclaude.ai&amp;errorReportingMode=parent&amp;formattedSpreadsheets=true#">1 June 2026</a><span>. Use the time you have.</span></span></blockquote><div><span><span><br/></span></span></div></div>
</div><div data-element-id="elm_Vkih9OF3of4bUesSpw_vow" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Vkih9OF3of4bUesSpw_vow"].zpelem-text { background-color:#ECF0F1; background-image:unset; border-style:solid; border-color:#A6CE39 !important; border-block-start-width:0px; border-inline-end-width:0px; border-block-end-width:0px; border-inline-start-width:5px; } </style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><p></p></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><span style="color:rgb(166, 206, 57);font-size:12px;"></span></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><div><blockquote style="margin-left:40px;border:none;"><p></p></blockquote><blockquote style="margin-left:40px;border:none;"><span style="color:rgb(166, 206, 57);font-size:12px;"></span></blockquote><blockquote style="margin-left:40px;border:none;"><div><span style="margin-bottom:6px;font-weight:700;color:rgb(166, 206, 57);"><br/></span></div><div><span style="margin-bottom:6px;font-weight:700;color:rgb(166, 206, 57);"></span></div></blockquote><blockquote style="margin-left:40px;border:none;"><div><span style="margin-bottom:6px;font-weight:700;color:rgb(0, 27, 76);">Further Reading</span></div></blockquote><div><br/></div><blockquote style="margin-left:40px;border:none;"></blockquote><blockquote style="margin-left:40px;border:none;"><a href="https://www.gtconsult.com/blogs/post/sharepoint-csp-enforcement-is-live-%E2%80%94-here-s-what-to-do-if-your-scripts-are-broken" title="SharePoint CSP Enforcement Is Live — Here's What to Do If Your Scripts Are Broken" target="_blank" rel="">SharePoint CSP Enforcement Is Live — Here's What to Do If Your Scripts Are Broken</a></blockquote><blockquote style="margin-left:40px;border:none;"><a href="https://www.gtconsult.com/blogs/post/still-on-the-90-day-csp-delay-your-1-june-deadline-is-coming" title="Still on the 90-Day CSP Delay? Your 1 June Deadline Is Coming" target="_blank" rel="">Still on the 90-Day CSP Delay? Your 1 June Deadline Is Coming</a><a href="https://www.gtconsult.com/blogs/post/still-on-the-90-day-csp-delay-your-1-june-deadline-is-coming" title="Still on the 90-Day CSP Delay? Your 1 June Deadline Is Coming" target="_blank" rel=""><br/></a></blockquote><blockquote style="margin-left:40px;border:none;"><a href="https://learn.microsoft.com/en-us/sharepoint/dev/spfx/content-securty-policy-trusted-script-sources">Support for CSP in SharePoint Online, Microsoft Learn<br/></a><a href="https://techcommunity.microsoft.com/blog/spblog/sharepoint-online-content-security-policy-csp-enforcement-dates-and-guidance/4472662">SharePoint Online CSP: Enforcement Dates and Guidance, Microsoft Tech Community</a></blockquote><blockquote style="margin-left:40px;border:none;"><br/></blockquote><div><br/></div></div></blockquote></div>
</div></div></div></div></div><div data-element-id="elm_6hHgYCt7GskgrPKfG8eEeg" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_5o9tyqS5DYa8Rs-lzUeMvg" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column="false"><style type="text/css"></style><div data-element-id="elm_bMqOVNOWc8vB8_07M3LnoQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_FgEBQeenEgCcCZdqqZW0nw" data-element-type="box" class="zpelem-box zpelement zpbox-container zpdark-section zpdark-section-bg "><style type="text/css"> [data-element-id="elm_FgEBQeenEgCcCZdqqZW0nw"].zpelem-box{ background-color:#001B4C; background-image:unset; } </style><div data-element-id="elm_J3T9wRE7uIRA18o-Xl8dEg" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-center zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><strong>Need our help?</strong><br/></h3></div>
<div data-element-id="elm_Wul5Nibzk63HvmqhW9GsWA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div style="text-align:center;margin-bottom:8px;"><div><p style="margin-bottom:28px;font-style:italic;"><span style="font-size:16px;">Chat to us and let's help you navigate this change.</span></p><span style="font-weight:700;"><a href="https://www.gtconsult.com/contact"></a></span></div></div><p></p></div>
</div><div data-element-id="elm_crCLYMwiUWYuNcQcqs795Q" data-element-type="button" class="zpelement zpelem-button "><style> [data-element-id="elm_crCLYMwiUWYuNcQcqs795Q"].zpelem-button{ margin-block-start:-5px; } </style><div class="zpbutton-container zpbutton-align-center zpbutton-align-mobile-center zpbutton-align-tablet-center"><style type="text/css"></style><a class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-roundcorner " href="https://outlook.office.com/bookwithme/user/6bd34779624c4a8ab5f3906f5e71baf7%40gtconsult.com/meetingtype/Cfseq1rTWEyZRk62iTNVAw2?anonymous&amp;ismsaljsauthenabled=true"><span class="zpbutton-content">Book a Free Consultation with Our Technical Account Manager, Trevin</span></a></div>
</div><div data-element-id="elm_jOXcQOq4phuaRlzAOuEquA" data-element-type="spacer" class="zpelement zpelem-spacer "><style> div[data-element-id="elm_jOXcQOq4phuaRlzAOuEquA"] div.zpspacer { height:30px; } @media (max-width: 768px) { div[data-element-id="elm_jOXcQOq4phuaRlzAOuEquA"] div.zpspacer { height:calc(30px / 3); } } </style><div class="zpspacer " data-height="30"></div>
</div></div></div></div></div></div></div> ]]></content:encoded><pubDate>Tue, 31 Mar 2026 14:28:53 +0000</pubDate></item><item><title><![CDATA[Still on the 90-Day CSP Delay? Your 1 June Deadline Is Coming]]></title><link>https://www.gtconsult.com/blogs/post/still-on-the-90-day-csp-delay-your-1-june-deadline-is-coming</link><description><![CDATA[<img align="left" hspace="5" src="https://www.gtconsult.com/Blog Site/HH.png"/>Still on the 90-day CSP delay? Your SharePoint Online enforcement deadline is 1 June 2026. Here's your 8-week action plan to audit violations, fix scripts, and test before the window closes.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_eP5YOwKNSrqbahK8CEdiQA" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_BzFHOmS6RROIhaqlaWh3nA" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_nISarZm9R1Ckzb_WbfTitg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_Ub5ABqLdR9-FylpHZrx5vQ" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center zptext-align-mobile-center zptext-align-tablet-center " data-editor="true"><p><span><span style="font-style:italic;">If your organisation opted into Microsoft's enforcement delay back in February, the window is closing. Here's everything you need to do before 1 June, and why the time to start is now, not May</span></span></p></div>
</div><div data-element-id="elm_dBxUcpgTjzwyeUr3DX8OBQ" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_dBxUcpgTjzwyeUr3DX8OBQ"] .zpimage-container figure img { width: 770px !important ; height: 433px !important ; } } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-custom zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Site/HH.png" size="custom" data-lightbox="true"/></picture></span></figure></div>
</div></div></div></div></div><div data-element-id="elm_WSrxBzjT5CfsxXqmDLge2g" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_Y3FtJkZ_Fv454pKS6SQW6g" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column="false"><style type="text/css"></style><div data-element-id="elm_vUw-S8Upiti5CapZN-fOmw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_TsSD7nEU3KBRCKf09eNBXA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div><p style="margin-bottom:20px;">When Microsoft announced SharePoint Online's Content Security Policy enforcement in early 2026, they included a lifeline for organisations that needed more time: a&nbsp;<code>Set-SPOTenant -DelayContentSecurityPolicyEnforcement $true</code>&nbsp;flag that pushed enforcement from 1 March to&nbsp;<span style="font-weight:600;">1 June 2026</span>. If your IT team enabled that flag, you bought yourself 90 days.</p><p style="margin-bottom:20px;">Those 90 days are now running out.</p><p style="margin-bottom:20px;">The purpose of the delay was to give organisations time to audit their environments, fix non-compliant scripts, and test changes, not to skip preparation entirely. If you haven't started yet, this post is your starting gun.</p></div><p></p></div>
</div></div></div></div></div><div data-element-id="elm_fHwr4ShVkzQ1UONfXB6fTA" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_rd-85g3wcjEDxqohf_55ow" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column="false"><style type="text/css"></style><div data-element-id="elm_ujtcD5FTjFye2mnVMw0dKQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_OVixK-nTcjZKFq0mEmfDvQ" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><strong>What Happens on 1 June</strong></h3></div>
<div data-element-id="elm_l_1rUXou8GqCdFk2Id9rag" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_l_1rUXou8GqCdFk2Id9rag"] .zpimagetext-container figure img { width: 511px !important ; height: 341px !important ; } } </style><div data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimagetext-container zpimage-with-text-container zpimage-align-left zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-custom zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
            type:fullscreen,
            theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Site/wooden-block-calendar-with-date-may-1-on-the-yello-2026-03-24-06-29-57-utc.jpg" size="custom" data-lightbox="true"/></picture></span></figure><div class="zpimage-text zpimage-text-align-left zpimage-text-align-mobile-left zpimage-text-align-tablet-left " data-editor="true"><p></p><div><div>On 1 June 2026, the enforcement delay expires automatically. There is no second delay option. After that date, CSP enforcement behaves exactly as it does for everyone else who went live 1 March:</div></div><p></p><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><ul><li>Inline JavaScript will be blocked on all modern SharePoint Online pages.</li><li>Scripts loaded from external sources not registered in your Trusted Script Sources list will be blocked.</li><li>Users will see broken web parts, missing functionality, and JavaScript errors with no visual warning that CSP is the cause.</li></ul></blockquote></blockquote><div><div><br/></div><div>The failure mode is silent from a user perspective: a web part just stops working. The only indication is in the browser console, which most end users will never open. That's why preparation before 1 June matters: there's no grace period, no warning message, and no automatic recovery.</div></div></div>
</div></div><div data-element-id="elm_vVTjvaYNjjqsl5c6BcpR7A" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><strong>Check Whether You're on the Delay</strong></h3></div>
<div data-element-id="elm_mAd6ToZty12QUOPb4HmZ-w" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p><span><span>If you're not certain whether your tenant enabled the delay, check it now via PowerShell:</span></span></p></div>
</div><div data-element-id="elm_ptso2aVAuT7leULuUlCsAQ" data-element-type="box" class="zpelem-box zpelement zpbox-container zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_ptso2aVAuT7leULuUlCsAQ"].zpelem-box{ margin-block-start:-2px; } </style><div data-element-id="elm_ABsc7FG80a-u9zKgcIbeww" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_ABsc7FG80a-u9zKgcIbeww"].zpelem-text { background-color:#001B4C; background-image:unset; border-style:solid; border-color:#A6CE39 !important; border-block-start-width:0px; border-inline-end-width:0px; border-block-end-width:0px; border-inline-start-width:5px; } </style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><p></p><div><pre style="margin-bottom:28px;"><br/><span style="color:rgb(166, 206, 57);">Get-SPOTenant | Select-Object DelayContentSecurityPolicyEnforcement</span></pre></div><p></p></blockquote></div>
</div><div data-element-id="elm_ai5wS71Rr-Uk1ajQ9Vao8Q" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p><span><span>If the value returns&nbsp;</span><code>True</code><span>, enforcement is delayed until 1 June. If it returns&nbsp;</span><code>False</code><span>, enforcement was already live on 1 March. Check whether anything broke in your environment around that date.</span></span></p></div>
</div></div></div></div></div></div><div data-element-id="elm_Nenw7td7E8Vcp0PxI95Gsw" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_HQa_EGP5Krt1Yt4ShdI_cg" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column="false"><style type="text/css"></style><div data-element-id="elm_-8aKbiND671QXMe0HXcrHA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_WAWdnhdvchGT3E9a1_1mnA" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><strong>Your Action Plan: The Next 8 Weeks</strong></h3></div>
</div></div></div></div><div data-element-id="elm_Ga_iE1bhXKzoEZZoJBSWwQ" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_7rAiNcPZj5hm5LhADvofqg" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_xwE1mnwpbKDgLfgMRo9tXQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-6 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_9CpVZvT0zpcskTlmd9JK3w" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_9CpVZvT0zpcskTlmd9JK3w"] .zpimage-container figure img { width: 540px ; height: 303.75px ; } } @media (max-width: 767px) { [data-element-id="elm_9CpVZvT0zpcskTlmd9JK3w"] .zpimage-container figure img { width:415px ; height:277.36px ; } } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit "><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Site/wEEK%20-2-.png" width="415" height="277.36" loading="lazy" size="fit"/></picture></span></figure></div>
</div><div data-element-id="elm_CRVLL7qBZG0TooyXt6x6cA" data-element-type="box" class="zpelem-box zpelement zpbox-container zspadding-space-allside-thin zplight-section zplight-section-bg "><style type="text/css"></style><div data-element-id="elm_JExDJGFXV4mDlMT1Rarrow" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h4
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><strong>Week 1–2: Audit</strong><br/></h4></div>
<div data-element-id="elm_UUIBIka0XaVrHqODZmYf3g" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div><p style="margin-bottom:20px;">Before you can fix anything, you need to know what's broken. Two tools:</p><ul><li style="margin-bottom:8px;"><span style="font-weight:600;">Microsoft Purview:</span>&nbsp;Search the audit log for&nbsp;<span style="font-weight:600;">&quot;Violated Content Security Policy&quot;</span>. This returns a tenant-wide list of every page and script source that triggered a CSP violation during the report-only window. This is your master list.</li><li style="margin-bottom:8px;"><span style="font-weight:600;">Browser console +&nbsp;<code>?csp=enforce</code>:</span>&nbsp;Append&nbsp;<code>?csp=enforce</code>&nbsp;to any modern page URL to force enforcement mode. Open Developer Tools (F12) and check the Console tab for blocked script errors. Use this to verify specific pages.</li></ul></div><p></p></div>
</div><div data-element-id="elm_m-U_DY5d4GsZVr4IipHvNQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_m-U_DY5d4GsZVr4IipHvNQ"].zpelem-text { background-color:#ECF0F1; background-image:unset; border-style:solid; border-color:#A6CE39 !important; border-block-start-width:0px; border-inline-end-width:0px; border-block-end-width:0px; border-inline-start-width:5px; } </style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><p></p></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><span style="color:rgb(166, 206, 57);font-size:12px;"></span></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><div><span style="margin-bottom:6px;font-weight:700;color:rgb(166, 206, 57);"><br/></span></div><div><span style="margin-bottom:6px;font-weight:700;color:rgb(166, 206, 57);">Don't Skip the Audit</span></div></blockquote><div><div></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><span><span>The most common mistake teams make is fixing the scripts they know about and missing the ones they don't. The Purview audit log is the only way to surface violations across your entire tenant, including pages and solutions built by people who may no longer be on the team.</span></span></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><p></p></blockquote><div><span><span><br/></span></span></div></div>
</div></div></div><div data-element-id="elm_nvIe16gcvvdn4vklKVVPyA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-6 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_vw0JMV39bKdHMNf9RTNh7A" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_vw0JMV39bKdHMNf9RTNh7A"] .zpimage-container figure img { width: 540px ; height: 303.75px ; } } @media (max-width: 767px) { [data-element-id="elm_vw0JMV39bKdHMNf9RTNh7A"] .zpimage-container figure img { width:415px ; height:276.67px ; } } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit "><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Site/wEEK%20-3-.png" width="415" height="276.67" loading="lazy" size="fit"/></picture></span></figure></div>
</div><div data-element-id="elm_o89jONOBSpPXYdro9h68fQ" data-element-type="box" class="zpelem-box zpelement zpbox-container zspadding-space-allside-thin zplight-section zplight-section-bg "><style type="text/css"></style><div data-element-id="elm_H0w7H_Wmc-xHEQoQKW8BxQ" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h4
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><strong>Week 3–5: Fix and Register</strong><br/></h4></div>
<div data-element-id="elm_tEqIHP1EyYN0f89vzKu96g" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div><p style="margin-bottom:20px;">Work through violations by type:</p><ul><li style="margin-bottom:8px;"><span style="font-weight:600;">Inline scripts:</span>&nbsp;Extract JavaScript into external&nbsp;<code>.js</code>&nbsp;files, host in a trusted location, update references. Register the hosting URL as a Trusted Script Source.</li><li style="margin-bottom:8px;"><span style="font-weight:600;">Dynamic external loads (<code>SPComponentLoader</code>):</span>&nbsp;Register each external URL manually in SharePoint Admin Center under Trusted Script Sources. The 300-entry limit applies across your entire tenant, audit before adding everything.</li><li style="margin-bottom:8px;"><span style="font-weight:600;">Third-party tools:</span>&nbsp;Contact vendors. Most major vendors have CSP-compliant versions of their SharePoint integrations available. This is a version upgrade, not a rebuild.</li></ul><div><br/></div></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><p></p></div>
</div></div></div></div><div data-element-id="elm__SrALul_SN6XxXXX9tpaSA" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_aMcZQjKYkpTJuZKQsJQhdA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-6 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_LK3DL-8pP0f-QWTwwF6YXg" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_LK3DL-8pP0f-QWTwwF6YXg"] .zpimage-container figure img { width: 540px ; height: 303.75px ; } } @media (max-width: 767px) { [data-element-id="elm_LK3DL-8pP0f-QWTwwF6YXg"] .zpimage-container figure img { width:415px ; height:277.01px ; } } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit "><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Site/wEEK%20-4-.png" width="415" height="277.01" loading="lazy" size="fit"/></picture></span></figure></div>
</div><div data-element-id="elm_aKTAxtAEhpxDn2YIn2LS8w" data-element-type="box" class="zpelem-box zpelement zpbox-container zspadding-space-allside-thin zplight-section zplight-section-bg "><style type="text/css"></style><div data-element-id="elm_MHpk3z_P0pkO7dZzLX2g7A" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h4
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><strong>Week 6–7: Test in Enforce Mode</strong><br/></h4></div>
<div data-element-id="elm_BHd6_CX5Z4yAdsrVxeDNgg" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p><span><span>Once fixes are in place, use&nbsp;</span><code>?csp=enforce</code><span>&nbsp;systematically across your critical pages to verify nothing is still breaking. Involve your end users or QA team, have them walk through their normal workflows on the pages they use most.</span></span></p><p><span><span><br/></span></span></p></div>
</div></div></div><div data-element-id="elm_oCKg2oL9zsxt1GsFB8C7oQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-6 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_oJIvZG5PmjREB-dLVrVtLA" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_oJIvZG5PmjREB-dLVrVtLA"] .zpimage-container figure img { width: 540px ; height: 303.75px ; } } @media (max-width: 767px) { [data-element-id="elm_oJIvZG5PmjREB-dLVrVtLA"] .zpimage-container figure img { width:415px ; height:277.01px ; } } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit "><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Site/wEEK%20-1-.png" width="415" height="277.01" loading="lazy" size="fit"/></picture></span></figure></div>
</div><div data-element-id="elm_sGQrlkEllU0E84gm-b400w" data-element-type="box" class="zpelem-box zpelement zpbox-container zspadding-space-allside-thin zplight-section zplight-section-bg "><style type="text/css"></style><div data-element-id="elm_a0Mn5P6CGZ5ZFVFz7QyeqQ" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h4
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><strong>Week 8: Sign Off and Communicate</strong><br/></h4></div>
<div data-element-id="elm_FHAGcoWYx05RrdKlZwa_8A" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p><span><span>Before 1 June, communicate the change to relevant stakeholders. If any web part behaviour has changed as a result of refactoring (however minor), users should know what to expect. Frame it as a security improvement, because it is.</span></span></p></div>
</div></div></div></div></div></div><div data-element-id="elm_eSMUyenMKXyRu81FMBkDEQ" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_TxXzevtdHCmJVnNT-UZf2g" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column="false"><style type="text/css"></style><div data-element-id="elm_FLgNMnG6wZz9R8XpnEEr8w" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_5YSBZW8ob9dmYkadUBvwYg" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><strong>The Risk of Waiting Until Late May</strong><br/></h3></div>
<div data-element-id="elm_QeWENosaztTQXcxdYg7Qfg" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div><p style="margin-bottom:20px;">The pattern we've seen with 1 March enforcement is that the teams who struggled were the ones who started late. Trusted Script Source changes can take up to&nbsp;<span style="font-weight:600;">24 hours to propagate</span>&nbsp;across a tenant. If you're making changes on 30 May and something doesn't propagate in time, you have no margin for error.</p><p style="margin-bottom:20px;">Eight weeks sounds like plenty of time. In practice, the audit usually surfaces more than expected, vendor responses take longer than expected, and internal sign-off processes take time. Start now.</p></div><p></p></div>
</div><div data-element-id="elm_AVPOoxqcsMhuu8NExJ0hxQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_AVPOoxqcsMhuu8NExJ0hxQ"].zpelem-text { background-color:#ECF0F1; background-image:unset; border-style:solid; border-color:#A6CE39 !important; border-block-start-width:0px; border-inline-end-width:0px; border-block-end-width:0px; border-inline-start-width:5px; } </style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><p></p></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><span style="color:rgb(166, 206, 57);font-size:12px;"></span></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><div><span style="margin-bottom:6px;font-weight:700;color:rgb(166, 206, 57);"><br/></span></div><div><span style="margin-bottom:6px;font-weight:700;color:rgb(166, 206, 57);"></span></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><div><span style="margin-bottom:6px;font-weight:700;color:rgb(0, 27, 76);">Further Reading</span></div></blockquote><div><div><br/></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><span><span></span></span></blockquote><blockquote style="margin-left:40px;border:none;"><a href="https://www.gtconsult.com/blogs/post/sharepoint-csp-enforcement-is-live-%E2%80%94-here-s-what-to-do-if-your-scripts-are-broken" title="SharePoint CSP Enforcement Is Live — Here's What to Do If Your Scripts Are Broken" target="_blank" rel="">SharePoint CSP Enforcement Is Live — Here's What to Do If Your Scripts Are Broken</a></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><span><a href="https://learn.microsoft.com/en-us/sharepoint/dev/spfx/content-securty-policy-trusted-script-sources">Support for CSP in SharePoint Online, Microsoft Learn<br/></a></span><span><a href="https://techcommunity.microsoft.com/blog/spblog/sharepoint-online-content-security-policy-csp-enforcement-dates-and-guidance/4472662">SharePoint Online CSP: Enforcement Dates and Guidance, Microsoft Tech Community</a></span></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><br/></blockquote><div><span><span><br/></span></span></div></div>
</div></div></div></div></div><div data-element-id="elm_3ZbIXMp_bplALZzuFc1h1g" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_Od3bzyBWoLtQccRrRMlQ3w" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column="false"><style type="text/css"></style><div data-element-id="elm_nh_UJO7sxasukwhsaPYSXQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_p_4CH1Hr4oUZ3mpXl5AC2w" data-element-type="box" class="zpelem-box zpelement zpbox-container zpdark-section zpdark-section-bg "><style type="text/css"> [data-element-id="elm_p_4CH1Hr4oUZ3mpXl5AC2w"].zpelem-box{ background-color:#001B4C; background-image:unset; } </style><div data-element-id="elm_75-2iHH7WrHRnwZ5HIRglg" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-center zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><strong>Not sure where to start with CSP?</strong><br/></h3></div>
<div data-element-id="elm_rH2SMxg2QFsrgy3H52qg9A" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div style="text-align:center;margin-bottom:8px;"><div><p style="margin-bottom:28px;font-style:italic;"><span style="font-size:16px;">Chat to us and let's help you navigate this change.</span></p><span style="font-weight:700;"><a href="https://www.gtconsult.com/contact"></a></span></div></div><p></p></div>
</div><div data-element-id="elm_8uXoyqeqm52XT5S4ty3lVg" data-element-type="button" class="zpelement zpelem-button "><style> [data-element-id="elm_8uXoyqeqm52XT5S4ty3lVg"].zpelem-button{ margin-block-start:-5px; } </style><div class="zpbutton-container zpbutton-align-center zpbutton-align-mobile-center zpbutton-align-tablet-center"><style type="text/css"></style><a class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-roundcorner " href="https://outlook.office.com/bookwithme/user/6bd34779624c4a8ab5f3906f5e71baf7%40gtconsult.com/meetingtype/Cfseq1rTWEyZRk62iTNVAw2?anonymous&amp;ismsaljsauthenabled=true"><span class="zpbutton-content">Book a Free Consultation with Our Technical Account Manager, Trevin</span></a></div>
</div><div data-element-id="elm_tv732cnkGpC8RoJYpyb1BQ" data-element-type="spacer" class="zpelement zpelem-spacer "><style> div[data-element-id="elm_tv732cnkGpC8RoJYpyb1BQ"] div.zpspacer { height:30px; } @media (max-width: 768px) { div[data-element-id="elm_tv732cnkGpC8RoJYpyb1BQ"] div.zpspacer { height:calc(30px / 3); } } </style><div class="zpspacer " data-height="30"></div>
</div></div></div></div></div></div></div> ]]></content:encoded><pubDate>Tue, 31 Mar 2026 12:11:08 +0000</pubDate></item><item><title><![CDATA[SharePoint CSP Enforcement Is Live — Here's What to Do If Your Scripts Are Broken]]></title><link>https://www.gtconsult.com/blogs/post/sharepoint-csp-enforcement-is-live-—-here-s-what-to-do-if-your-scripts-are-broken</link><description><![CDATA[<img align="left" hspace="5" src="https://www.gtconsult.com/Blog Site/bROKEN sCRIPTS.png"/>SharePoint CSP enforcement broke your scripts? Learn how to diagnose CSP violations, fix inline JavaScript, and register trusted sources in SharePoint Online after the 1 March 2026 deadline.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_JlBbArKeROui0v2FXVIzqw" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm__ySjZpf_Q5m2x5H2t8DhAg" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_iTIyUCKNQo-NNv5r6KbnXQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_F5xiAV7PQhCYxliSTKGY7g" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center zptext-align-mobile-center zptext-align-tablet-center " data-editor="true"><p><span><span style="font-style:italic;">Microsoft flipped the switch on March 1. If your web parts or custom solutions are suddenly misbehaving, Content Security Policy enforcement is likely the culprit. Here's how to diagnose and fix it.</span></span></p></div>
</div><div data-element-id="elm_y84eyVjKieyYxHSZE9h2PA" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_y84eyVjKieyYxHSZE9h2PA"] .zpimage-container figure img { width: 862px !important ; height: 484px !important ; } } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-custom zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Site/Freak%20Out%20Panic%20GIF.gif" size="custom" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_0rvVra6YVcKDivZhYjlamg" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div><p style="margin-bottom:20px;">On 1 March 2026, Microsoft moved SharePoint Online's Content Security Policy (CSP) from report-only mode into full enforcement. That means non-compliant scripts are no longer just being logged, they're being&nbsp;<span style="font-weight:600;">blocked</span>. If something in your environment stopped working around that date, there's a good chance CSP is the reason.</p><p style="margin-bottom:20px;">This post walks you through how to confirm CSP is the issue, understand what's being blocked and why, and fix it, without breaking anything else in the process.</p></div><p></p></div>
</div><div data-element-id="elm_hfrLBq5gAsxnSPWo9PJYUw" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><strong>Step 1: Confirm CSP Is the Culprit</strong></h3></div>
<div data-element-id="elm_1CtLYqPP1JHlVvtqxqQY3g" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p><span><span>Before diving into fixes, verify that CSP enforcement is actually what's blocking your scripts. The fastest way is through the browser console.</span></span></p></div>
</div><div data-element-id="elm_w_MBbIMF6PltojDnl-7ngQ" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div></div><p></p><ol><li>Open the affected SharePoint page in your browser.</li><li>Press&nbsp;<span style="font-family:&quot;Courier New&quot;, monospace;background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);"> F12&nbsp;</span> to open Developer Tools and navigate to the Console tab.</li><li>Look for errors beginning with&nbsp;&nbsp;<span style="font-family:&quot;Courier New&quot;, monospace;background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);">Refused to execute script </span>&nbsp;or containing&nbsp;<span style="background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);"><span style="font-family:&quot;Courier New&quot;, monospace;">Content-Security-Policy&nbsp;</span></span>.</li><li>Alternatively, append&nbsp;<span style="font-family:&quot;Courier New&quot;, monospace;background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);"> ?csp=enforce </span>&nbsp;to the page URL to trigger enforcement mode explicitly and surface violations immediately.</li></ol></div>
</div><div data-element-id="elm_YGWgrTGmL6dhtuSfMdrI3Q" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p><span><span>If you're seeing CSP violation errors, you're in the right place. If not, the issue may be something else. Check network errors or JavaScript exceptions separately.</span></span></p></div>
</div></div></div></div></div><div data-element-id="elm__GHuxlVbA11FzHnzghrshg" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_fKXU-l1bWvSlNefZg5cEcg" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column="false"><style type="text/css"></style><div data-element-id="elm_KAy_qLw4wb0PbMWUTTIWVw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_ekM2Bw3eIr0FUiKtH2gWvA" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><strong>Step 2: Identify What's Being Blocked</strong></h3></div>
<div data-element-id="elm_6GI90XA0XyMCPbAwRPO26g" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p><span><span>CSP violations in SharePoint Online generally fall into two categories:&nbsp;</span><span style="font-weight:600;">inline scripts</span><span>&nbsp;and&nbsp;</span><span style="font-weight:600;">untrusted external sources</span><span>.</span></span></p></div>
</div><div data-element-id="elm_dACnocdr5by5gpVhmC2p0w" data-element-type="imageheadingtext" class="zpelement zpelem-imageheadingtext "><style> @media (min-width: 992px) { [data-element-id="elm_dACnocdr5by5gpVhmC2p0w"] .zpimageheadingtext-container figure img { width: 313px !important ; height: 313px !important ; } } </style><div data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimageheadingtext-container zpimage-with-text-container zpimage-align-left zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-custom zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
            type:fullscreen,
            theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Site/Looking%20Where%20Are%20You%20GIF%20by%20Pudgy%20Penguins.gif" data-src="/Blog%20Site/Looking%20Where%20Are%20You%20GIF%20by%20Pudgy%20Penguins.gif" size="custom" data-lightbox="true"/></picture></span></figure><div class="zpimage-headingtext-container"><h3 class="zpimage-heading zpimage-text-align-left zpimage-text-align-mobile-left zpimage-text-align-tablet-left" data-editor="true"><span>Inline Scripts<br/></span></h3><div class="zpimage-text zpimage-text-align-left zpimage-text-align-mobile-left zpimage-text-align-tablet-left " data-editor="true"><p><span><span>Any JavaScript written directly into a page, web part, or solution using&nbsp;<span style="font-family:&quot;Courier New&quot;, monospace;background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);">&nbsp;</span></span><code><span style="font-family:&quot;Courier New&quot;, monospace;background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);">innerHTML&nbsp;</span>&nbsp;</code><span>,&nbsp;<span style="background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);">&nbsp;</span></span><code><span style="background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);"><span style="font-family:&quot;Courier New&quot;, monospace;">document.write()</span>&nbsp;</span>&nbsp;</code><span>, or script tags without a proper source reference will be blocked. Microsoft has confirmed that&nbsp;<span style="background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);">&nbsp;</span></span><code style="background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);">unsafe-inline&nbsp;</code><span>&nbsp;is not permitted and that nonce values will not be exposed, so there is no workaround here. These scripts must be refactored.</span></span></p><p><span><span><br/></span></span></p><p><span><span></span></span></p><div><h3></h3></div><div><h3 style="margin-bottom:10px;">Untrusted External Sources</h3><div><span><span>Scripts loaded from external URLs (CDNs, third-party services, custom hosted libraries) that haven't been added to your SharePoint tenant's Trusted Script Sources list will also be blocked. Note that standard SPFx bundles deployed via&nbsp;<span style="background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);">&nbsp;</span></span><code style="background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);">cdnBasePath</code><span><span style="background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);">&nbsp;</span> or declared in&nbsp;<span style="background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);">&nbsp;</span></span><code style="background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);">externals</code><span><span style="background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);">&nbsp;</span> in your config are auto-trusted, it's dynamic loading via&nbsp;<span style="background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);">&nbsp;</span></span><code style="background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);">SPComponentLoader.loadScript()&nbsp;</code><span>&nbsp;or ad-hoc external references that need manual registration.</span></span><br/></div></div><br/><p></p></div>
</div></div></div><div data-element-id="elm_mOWsCtUcNteYCYALP4q7Ug" data-element-type="box" class="zpelem-box zpelement zpbox-container zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_mOWsCtUcNteYCYALP4q7Ug"].zpelem-box{ background-color:#ECF0F1; background-image:unset; border-style:solid; border-color:#A6CE39 !important; border-block-start-width:0px; border-inline-end-width:0px; border-block-end-width:0px; border-inline-start-width:5px; } </style><div data-element-id="elm_DhcfJmdwiJuT4EhTQjRgxw" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><p><span><span style="margin-bottom:6px;font-weight:600;">TENANT-WIDE AUDIT</span></span></p></blockquote></div>
</div><div data-element-id="elm_rnmNIJtk6eMEAoVd_rC16Q" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><p><span><span>Go to Microsoft Purview and search for&nbsp;</span><span style="margin-bottom:6px;font-weight:600;">&quot;<span style="color:rgb(166, 206, 57);">Violated Content Security Policy</span>&quot;&nbsp;</span><span>in the audit log. This gives you a full picture of which pages and scripts have triggered violations across your entire tenant, not just the one page you're looking at.</span></span></p><p><span><span><br/></span></span></p></blockquote></div>
</div></div></div></div></div></div><div data-element-id="elm_KEv-U4Ca6DQzMQczVw-bzA" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_1rV5-ALCygGG8HRBGFd3mw" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column="false"><style type="text/css"></style><div data-element-id="elm_c6xc0TVoOPR00Qlu21Q8dw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_A3BGzOhe70IyTdddyuW5RQ" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><strong>Step 3: Fix Inline Scripts</strong></h3></div>
<div data-element-id="elm_meag7RQcmyEJuBLU1WRWSg" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p><span><span>Inline scripts need to be moved into external&nbsp;<span style="background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);">&nbsp;</span></span><code style="background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);">.js&nbsp;</code><span>&nbsp;files and hosted in a trusted location. The typical path for SPFx solutions:</span></span></p></div>
</div><div data-element-id="elm_RCDcvwmmiQ0sFP2mC49-eA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div></div><p></p><ol><li>Extract the inline JavaScript into a standalone&nbsp;<span style="background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);"> .js&nbsp;</span> file.</li><li>Deploy the file to a trusted location (e.g., SharePoint document library, Azure Blob Storage, your CDN).</li><li>Reference it as an external module within your SPFx solution rather than injecting it inline.</li><li>Register the script source as a Trusted Script Source (see Step 4).</li></ol></div>
</div><div data-element-id="elm_6m7EQfNHcwtUzTMpmkqK5A" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p><span><span>For scripts embedded directly in classic-style page layouts or content editor web parts, the same logic applies, extract, host externally, reference externally.</span></span></p></div>
</div><div data-element-id="elm_dQYvqRaWOUiT6kZc49itQg" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><strong><span>Step 4: Register Trusted Script Sources</span></strong></h3></div>
<div data-element-id="elm_dHKHl9I8fLTOXl8bjDybKA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p><span><span>For any external URL your solutions load scripts from, you need to add that domain to SharePoint's Trusted Script Sources list. This is done in the SharePoint Admin Center.</span></span></p></div>
</div><div data-element-id="elm_l93duRYcaUVRZCjfjHk_og" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_l93duRYcaUVRZCjfjHk_og"] .zpimagetext-container figure img { width: 23px !important ; height: 23px !important ; } } </style><div data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimagetext-container zpimage-with-text-container zpimage-align-left zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-custom zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
            type:fullscreen,
            theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Site/Copy%20of%20Copy%20of%20Secure%20score%20carousel%20-2-.png" size="custom" data-lightbox="true"/></picture></span></figure><div class="zpimage-text zpimage-text-align-left zpimage-text-align-mobile-left zpimage-text-align-tablet-left " data-editor="true"><p></p><div><p>Go to&nbsp;<span style="font-weight:600;">SharePoint Admin Center → Advanced → Trusted Script Sources</span>&nbsp;(or use PowerShell).</p></div><p></p></div>
</div></div><div data-element-id="elm_49oMtvAnwwXxcxf97JUX5g" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_49oMtvAnwwXxcxf97JUX5g"] .zpimagetext-container figure img { width: 23px !important ; height: 23px !important ; } } </style><div data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimagetext-container zpimage-with-text-container zpimage-align-left zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-custom zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
            type:fullscreen,
            theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Site/Copy%20of%20Copy%20of%20Secure%20score%20carousel%20-3-.png" size="custom" data-lightbox="true"/></picture></span></figure><div class="zpimage-text zpimage-text-align-left zpimage-text-align-mobile-left zpimage-text-align-tablet-left " data-editor="true"><p></p><p></p><div><p>Add the full domain or path of the external script source. Wildcards are limited, subdomains must be registered individually.</p></div><p></p><p></p></div>
</div></div><div data-element-id="elm_93me_ksQSOiaFweHBkG0IA" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_93me_ksQSOiaFweHBkG0IA"] .zpimagetext-container figure img { width: 23px !important ; height: 23px !important ; } } </style><div data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimagetext-container zpimage-with-text-container zpimage-align-left zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-custom zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
            type:fullscreen,
            theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Site/Copy%20of%20Copy%20of%20Secure%20score%20carousel%20-4-.png" size="custom" data-lightbox="true"/></picture></span></figure><div class="zpimage-text zpimage-text-align-left zpimage-text-align-mobile-left zpimage-text-align-tablet-left " data-editor="true"><p></p><div><p><span>Note the 300 entry limit across your tenant. Audit carefully before adding everything.</span></p></div><p></p></div>
</div></div><div data-element-id="elm_i69HLMIE0ni_943ZkBfKbA" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_i69HLMIE0ni_943ZkBfKbA"] .zpimagetext-container figure img { width: 23px !important ; height: 23px !important ; } } </style><div data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimagetext-container zpimage-with-text-container zpimage-align-left zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-custom zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
            type:fullscreen,
            theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Site/Copy%20of%20Copy%20of%20Secure%20score%20carousel%20-5-.png" size="custom" data-lightbox="true"/></picture></span></figure><div class="zpimage-text zpimage-text-align-left zpimage-text-align-mobile-left zpimage-text-align-tablet-left " data-editor="true"><p></p><div><p><span>Changes can take up to 24 hours to propagate across your tenant.</span></p></div><p></p></div>
</div></div><div data-element-id="elm_ctoXuMt9AxzU9reosTs0wQ" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p><span><span>Via PowerShell:</span></span></p></div>
</div><div data-element-id="elm_5U-4PfFgccroxGbhR6lGzA" data-element-type="box" class="zpelem-box zpelement zpbox-container zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_IBJtMmV_HN0vLFAWoXTxBw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_IBJtMmV_HN0vLFAWoXTxBw"].zpelem-text { background-color:#001B4C; background-image:unset; border-style:solid; border-color:#A6CE39 !important; border-block-start-width:1px; border-inline-end-width:1px; border-block-end-width:1px; border-inline-start-width:6px; } </style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><p></p><div><pre style="margin-bottom:28px;"><span style="font-family:&quot;Courier New&quot;, monospace;"><span style="color:rgb(166, 206, 57);"><br/>Add-SPOTenantCdnOrigin -CdnType Private -OriginUrl &quot;https://yourdomain.com/scripts&quot;</span></span></pre></div><p></p></blockquote></div>
</div></div></div></div></div></div><div data-element-id="elm_Yw9Ps3j5jzQnD7q-UgWTbw" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_WU3YlmnNnTjKkyJU_dSD4Q" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column="false"><style type="text/css"></style><div data-element-id="elm_3cEfaDqcxWBriC9THUiCuQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_m8IK40gwtTPZskTD4IxrBg" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><strong>Step 5: Coordinate With Third-Party Vendors</strong></h3></div>
<div data-element-id="elm_757iSwUXx5BmO6eeSeR8vA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div><p style="margin-bottom:20px;">If your SharePoint environment includes solutions from third-party vendors, analytics tools, chatbots, form builders, or similar, those vendors may need to update their products to be CSP-compliant. Reach out to them with the specific violation URLs from your Purview audit and ask for a compliance timeline.</p><p style="margin-bottom:20px;">In the meantime, you can temporarily register their script sources as trusted, but the long-term fix needs to come from their end if their solutions use inline scripting patterns.</p></div><p></p></div>
</div><div data-element-id="elm_6Ma8PrVKz7twPmSMo-JpZQ" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><strong><span>If You're Still on the 90-Day Delay</span></strong></h3></div>
<div data-element-id="elm_d0IEmWOdqxAck3bLuHJhwQ" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p><span><span>Some tenants enabled the 90-day enforcement delay using&nbsp;<span style="background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);">&nbsp;</span></span><code><span style="background-color:rgb(0, 27, 76);color:rgb(166, 206, 57);">Set-SPOTenant -DelayContentSecurityPolicyEnforcement $true&nbsp;</span>&nbsp;</code><span>before 1 March. If that's you, your enforcement date is&nbsp;</span><span style="font-weight:600;">1 June 2026</span><span>, and it will arrive faster than you think. Use this guide now while you still have the buffer.</span></span></p></div>
</div><div data-element-id="elm_Z1i6hqjMX6RByjb63q0h7Q" data-element-type="box" class="zpelem-box zpelement zpbox-container zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_Z1i6hqjMX6RByjb63q0h7Q"].zpelem-box{ background-color:#ECF0F1; background-image:unset; border-style:solid; border-color:#A6CE39 !important; border-block-start-width:0px; border-inline-end-width:0px; border-block-end-width:0px; border-inline-start-width:5px; } </style><div data-element-id="elm_R3C5fVvgQJG5taBIzKKyrQ" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><p><span><span style="margin-bottom:6px;font-weight:600;">FURTHER READING</span></span></p></blockquote></div>
</div><div data-element-id="elm_nQzEhkS31J4tyfCb_RlvEA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><blockquote style="margin-left:40px;border:none;"><a href="https://www.gtconsult.com/blogs/post/still-on-the-90-day-csp-delay-your-1-june-deadline-is-coming" title="Still on the 90-Day CSP Delay? Your 1 June Deadline Is Coming" target="_blank" rel="">Still on the 90-Day CSP Delay? Your 1 June Deadline Is Coming</a></blockquote><blockquote style="margin-left:40px;border:none;"><p><a href="https://learn.microsoft.com/en-us/sharepoint/dev/spfx/content-securty-policy-trusted-script-sources">Support for CSP in SharePoint Online, Microsoft Learn</a></p><p><a href="https://techcommunity.microsoft.com/blog/spblog/sharepoint-online-content-security-policy-csp-enforcement-dates-and-guidance/4472662">SharePoint Online CSP: Enforcement Dates and Guidance, Microsoft Tech Community</a></p><p><br/></p></blockquote></blockquote></div>
</div></div></div></div></div></div><div data-element-id="elm_985slfZTR4k2ttRSbSmS5w" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_xzVCl9up0AagLZJdU3YuDA" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column="false"><style type="text/css"></style><div data-element-id="elm_OPiyNqZOORX7qw_D4WaPfg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_xW6xLO2np-KPSjiRwKVaEQ" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><span>Still dealing with broken scripts after CSP enforcement?</span></h3></div>
</div></div></div></div><div data-element-id="elm_m1WjnY7aKkk-kIQT-FIXEg" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_lfVophjrGg8fwbIKQtky6w" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column="false"><style type="text/css"></style><div data-element-id="elm_aeLH76DFxhLwc7cGquF0rg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_-1ybMYiXbQSrXh1qhSgOIQ" data-element-type="box" class="zpelem-box zpelement zpbox-container zpdark-section zpdark-section-bg "><style type="text/css"> [data-element-id="elm_-1ybMYiXbQSrXh1qhSgOIQ"].zpelem-box{ background-color:#001B4C; background-image:unset; } </style><div data-element-id="elm_lR9Tn2hQXp3BPbLtMeeYhg" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-center zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><strong>Not sure where to start with CSP?</strong><br/></h3></div>
<div data-element-id="elm_i4q2Vzh5RsiZyQhQrjv7XQ" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div style="text-align:center;margin-bottom:8px;"><div><p style="margin-bottom:28px;font-style:italic;"><span style="font-size:16px;">Chat to us and let's help you navigate this change.</span></p><span style="font-weight:700;"><a href="https://www.gtconsult.com/contact"></a></span></div></div><p></p></div>
</div><div data-element-id="elm__VFsH1zQMu4Icm-_Sw9O1A" data-element-type="button" class="zpelement zpelem-button "><style> [data-element-id="elm__VFsH1zQMu4Icm-_Sw9O1A"].zpelem-button{ margin-block-start:-5px; } </style><div class="zpbutton-container zpbutton-align-center zpbutton-align-mobile-center zpbutton-align-tablet-center"><style type="text/css"></style><a class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-roundcorner " href="https://outlook.office.com/bookwithme/user/6bd34779624c4a8ab5f3906f5e71baf7%40gtconsult.com/meetingtype/Cfseq1rTWEyZRk62iTNVAw2?anonymous&amp;ismsaljsauthenabled=true"><span class="zpbutton-content">Book a Free Consultation with Our Technical Account Manager, Trevin</span></a></div>
</div><div data-element-id="elm_4Y45PwLDQLXa_hn4558z0A" data-element-type="spacer" class="zpelement zpelem-spacer "><style> div[data-element-id="elm_4Y45PwLDQLXa_hn4558z0A"] div.zpspacer { height:30px; } @media (max-width: 768px) { div[data-element-id="elm_4Y45PwLDQLXa_hn4558z0A"] div.zpspacer { height:calc(30px / 3); } } </style><div class="zpspacer " data-height="30"></div>
</div></div></div></div></div></div></div> ]]></content:encoded><pubDate>Mon, 30 Mar 2026 16:25:43 +0000</pubDate></item></channel></rss>