Skip to content

Commit 1df0635

Browse files
committed
HttpExtension: added support for 'http:' in CSP
1 parent d73c9aa commit 1df0635

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

src/Bridges/HttpDI/HttpExtension.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,9 @@ private static function buildPolicy(array $config): string
140140
$policy = $policy === true ? [] : (array) $policy;
141141
$value .= $type;
142142
foreach ($policy as $item) {
143+
if (is_array($item)) {
144+
$item = key($item) . ':';
145+
}
143146
$value .= !isset($nonQuoted[$type]) && preg_match('#^[a-z-]+$#D', $item) ? " '$item'" : " $item";
144147
}
145148
$value .= '; ';

tests/Http.DI/HttpExtension.csp.phpt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ http:
3030
style-src:
3131
- self
3232
- https://example.com
33+
- http:
3334
require-sri-for: style
3435
sandbox: allow-forms
3536
plugin-types: application/x-java-applet
@@ -50,7 +51,7 @@ $container->initialize();
5051
$headers = headers_list();
5152

5253
preg_match('#nonce-([\w+/]+=*)#', implode($headers), $nonce);
53-
Assert::contains("Content-Security-Policy: default-src 'self' https://example.com; upgrade-insecure-requests; script-src 'nonce-$nonce[1]'; style-src 'self' https://example.com; require-sri-for style; sandbox allow-forms; plugin-types application/x-java-applet;", $headers);
54+
Assert::contains("Content-Security-Policy: default-src 'self' https://example.com; upgrade-insecure-requests; script-src 'nonce-$nonce[1]'; style-src 'self' https://example.com http:; require-sri-for style; sandbox allow-forms; plugin-types application/x-java-applet;", $headers);
5455
Assert::contains("Content-Security-Policy-Report-Only: default-src 'nonce-$nonce[1]'; report-uri https://example.com/report; upgrade-insecure-requests;", $headers);
5556

5657

0 commit comments

Comments
 (0)