Fix CSP style-src-elem allowlist
This commit is contained in:
@@ -48,15 +48,6 @@ class ContentSecurityPolicy
|
|||||||
"'nonce-{$styleNonce}'",
|
"'nonce-{$styleNonce}'",
|
||||||
'https:',
|
'https:',
|
||||||
];
|
];
|
||||||
$styleElemSources = [];
|
|
||||||
if ($allowUnsafeInlineStyles) {
|
|
||||||
$styleElemSources = [
|
|
||||||
"'self'",
|
|
||||||
"'unsafe-inline'",
|
|
||||||
'https:',
|
|
||||||
'data:',
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
$connectSources = [
|
$connectSources = [
|
||||||
"'self'",
|
"'self'",
|
||||||
@@ -129,6 +120,11 @@ class ContentSecurityPolicy
|
|||||||
$styleSources[] = 'data:';
|
$styleSources[] = 'data:';
|
||||||
$connectSources[] = 'https:';
|
$connectSources[] = 'https:';
|
||||||
$fontSources[] = 'https:';
|
$fontSources[] = 'https:';
|
||||||
|
$styleElemSources = $styleSources;
|
||||||
|
|
||||||
|
if ($allowUnsafeInlineStyles) {
|
||||||
|
$styleElemSources = array_unique(array_merge($styleElemSources, ["'unsafe-inline'"]));
|
||||||
|
}
|
||||||
|
|
||||||
$directives = [
|
$directives = [
|
||||||
'default-src' => ["'self'"],
|
'default-src' => ["'self'"],
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ class SecurityHeadersTest extends TestCase
|
|||||||
$response->assertHeader('Referrer-Policy', 'strict-origin-when-cross-origin');
|
$response->assertHeader('Referrer-Policy', 'strict-origin-when-cross-origin');
|
||||||
$response->assertHeader('Permissions-Policy', 'camera=(), microphone=(), geolocation=()');
|
$response->assertHeader('Permissions-Policy', 'camera=(), microphone=(), geolocation=()');
|
||||||
$response->assertHeader('Content-Security-Policy');
|
$response->assertHeader('Content-Security-Policy');
|
||||||
|
$response->assertHeaderContains('Content-Security-Policy', "style-src-elem 'self'");
|
||||||
$response->assertHeader('Strict-Transport-Security', 'max-age=31536000; includeSubDomains');
|
$response->assertHeader('Strict-Transport-Security', 'max-age=31536000; includeSubDomains');
|
||||||
$response->assertCookie('XSRF-TOKEN');
|
$response->assertCookie('XSRF-TOKEN');
|
||||||
|
|
||||||
@@ -46,6 +47,7 @@ class SecurityHeadersTest extends TestCase
|
|||||||
|
|
||||||
$login->assertOk();
|
$login->assertOk();
|
||||||
$login->assertHeader('Content-Security-Policy');
|
$login->assertHeader('Content-Security-Policy');
|
||||||
|
$login->assertHeaderContains('Content-Security-Policy', "style-src-elem 'self'");
|
||||||
$login->assertHeader('X-Frame-Options', 'SAMEORIGIN');
|
$login->assertHeader('X-Frame-Options', 'SAMEORIGIN');
|
||||||
$login->assertCookie('XSRF-TOKEN');
|
$login->assertCookie('XSRF-TOKEN');
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
Reference in New Issue
Block a user