3 declare(strict_types = 1);
27 protected const HEADER_PATTERN =
'#(?<directive>default-src|script-src|style-src|object-src)\h+(?<rule>[^;]+)(?:\s*;\s*|$)#';
36 if (preg_match_all(self::HEADER_PATTERN, $header, $matches)) {
37 foreach ($matches[
'directive'] as $index => $name) {
40 $matches[
'rule'][$index]
48 return empty($this->directives);
53 $defaultSrc = isset($this->directives[
'default-src'])
56 $scriptSrc = isset($this->directives[
'script-src'])
59 $styleSrc = isset($this->directives[
'style-src'])
62 $objectSrc = isset($this->directives[
'object-src'])
65 return ($scriptSrc ?? $defaultSrc ??
false)
66 && ($styleSrc ?? $defaultSrc ??
false)
67 && ($objectSrc ?? $defaultSrc ??
false);