File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 3939use Config \Cache ;
4040use Config \Feature ;
4141use Config \Services ;
42+ use Kint \Kint ;
43+ use Kint \Renderer \RichRenderer ;
4244use Locale ;
4345use ReflectionFunction ;
4446use ReflectionFunctionAbstract ;
@@ -207,10 +209,17 @@ private function resetKintForWorkerMode(): void
207209 return ;
208210 }
209211
210- $ csp = service ('csp ' );
211- if ($ csp ->enabled ()) {
212- RichRenderer::$ js_nonce = $ csp ->getScriptNonce ();
213- RichRenderer::$ css_nonce = $ csp ->getStyleNonce ();
212+ // Keep CSP lazy unless it was already initialized or explicitly enabled.
213+ if (Services::has ('csp ' ) || config (App::class)->CSPEnabled ) {
214+ $ csp = service ('csp ' );
215+
216+ if ($ csp ->enabled ()) {
217+ RichRenderer::$ js_nonce = $ csp ->getScriptNonce ();
218+ RichRenderer::$ css_nonce = $ csp ->getStyleNonce ();
219+ } else {
220+ RichRenderer::$ js_nonce = null ;
221+ RichRenderer::$ css_nonce = null ;
222+ }
214223 } else {
215224 RichRenderer::$ js_nonce = null ;
216225 RichRenderer::$ css_nonce = null ;
Original file line number Diff line number Diff line change @@ -1306,4 +1306,26 @@ public function testResetForWorkerMode(): void
13061306 $ this ->assertSame ($ csp ->getStyleNonce (), RichRenderer::$ css_nonce );
13071307 $ this ->assertTrue (RichRenderer::$ needs_pre_render );
13081308 }
1309+
1310+ public function testResetForWorkerModeDoesNotLoadCspWhenDisabled (): void
1311+ {
1312+ $ this ->resetServices ();
1313+
1314+ config (App::class)->CSPEnabled = false ;
1315+
1316+ RichRenderer::$ js_nonce = 'stale-script-nonce ' ;
1317+ RichRenderer::$ css_nonce = 'stale-style-nonce ' ;
1318+ RichRenderer::$ needs_pre_render = false ;
1319+
1320+ $ codeigniter = new MockCodeIgniter (new App ());
1321+
1322+ $ this ->assertFalse (Services::has ('csp ' ));
1323+
1324+ $ codeigniter ->resetForWorkerMode ();
1325+
1326+ $ this ->assertFalse (Services::has ('csp ' ));
1327+ $ this ->assertNull (RichRenderer::$ js_nonce );
1328+ $ this ->assertNull (RichRenderer::$ css_nonce );
1329+ $ this ->assertTrue (RichRenderer::$ needs_pre_render );
1330+ }
13091331}
You can’t perform that action at this time.
0 commit comments