removeUnwantedHeaders($this->unwantedHeaderList); $response = $next($request); $response->headers->set('Referrer-Policy', 'no-referrer-when-downgrade'); $response->headers->set('X-Content-Type-Options', 'nosniff'); $response->headers->set('X-XSS-Protection', '1; mode=block'); $response->headers->set('X-Frame-Options', 'SAMEORIGIN'); $response->headers->set('Strict-Transport-Security', 'max-age=31536000; includeSubDomains;'); $cspPolicies = [ "default-src 'none';", "manifest-src 'self';", // * CKEDITOR Specific https://ckeditor.com/docs/ckeditor5/latest/installation/advanced/csp.html 'connect-src ' . implode(" ", [ '\'self\'', 'https://yl.s-web.fr', 'https://api-adresse.data.gouv.fr', ]) . ' blob:;', "img-src * https://yl.s-web.fr data: blob:;", // "frame-src https://www.youtube.com;", "frame-src https://www.youtube-nocookie.com https://www.google.com/recaptcha/;", "font-src 'self' data:;", // ! Using CKEditor will must have unsafe-inline style // phpcs:ignore Generic.Files.LineLength.TooLong "style-src 'self' 'unsafe-inline' " . \implode(' ', [ "https://unpkg.com" ]) . ';', // ! If you dont use ckeditor use this // "style-src 'self' 'nonce-$nonce';", // phpcs:ignore Generic.Files.LineLength.TooLong 'script-src https: ' . implode(" ", [ '\'self\'', 'https://www.google.com/recaptcha/', 'https://www.gstatic.com/recaptcha/', 'https://*.googletagmanager.com', 'https://yl.s-web.fr', 'graph.facebook.com', 'https://z.moatads.com', ]) . ' ' . $jsDev . ';' ]; $response->headers->set( 'Content-Security-Policy', implode(' ', $cspPolicies) . $reportUri ); $response->headers->set('Feature-Policy', 'fullscreen \'self\';'); return $response; } /** * Remove unwanted headers * * @param array $headerList * @return void */ private function removeUnwantedHeaders(array $headerList) { foreach ($headerList as $header) { header_remove($header); } } }