public static function getCSPHeader(array $config): array
    {
        $directives = [
            'default-src',
            'base-uri',
            'connect-src',
            'font-src',
            'form-action',
            'frame-ancestors',
            'frame-src',
            'img-src',
            'manifest-src',
            'media-src',
            'object-src',
            'plugin-types',
            'require-sri-for',
            'sandbox',
            'script-src',
            'style-src',
            'worker-src',
        ];

        $headers = [];

        foreach ($directives as $directive) {
            if (isset($config[$directive])) {
                $headers[] = self::compileDirective($directive, $config[$directive]);
            }
        }

        if (! empty($config['block-all-mixed-content'])) {
            $headers[] = 'block-all-mixed-content';
        }

        if (! empty($config['upgrade-insecure-requests'])) {
            $headers[] = 'upgrade-insecure-requests';
        }

        if (! empty($config['report-uri'])) {
            $headers[] = sprintf('report-uri %s', $config['report-uri']);
        }

        $key = ! empty($config['report-only'])
            ? 'Content-Security-Policy-Report-Only'
            : 'Content-Security-Policy';

        return [$key => implode('; ', array_filter($headers, 'strlen'))];
    }
public static function getCSPHeader(array $config): array
    {
        $directives = [
            'default-src',
            'base-uri',
            'connect-src',
            'font-src',
            'form-action',
            'frame-ancestors',
            'frame-src',
            'img-src',
            'manifest-src',
            'media-src',
            'object-src',
            'plugin-types',
            'require-sri-for',
            'sandbox',
            'script-src',
            'style-src',
            'worker-src',
        ];

        $headers = [];

        foreach ($directives as $directive) {
            if (isset($config[$directive])) {
                $headers[] = self::compileDirective($directive, $config[$directive]);
            }
        }

        if (! empty($config['block-all-mixed-content'])) {
            $headers[] = 'block-all-mixed-content';
        }

        if (! empty($config['upgrade-insecure-requests'])) {
            $headers[] = 'upgrade-insecure-requests';
        }

        if (! empty($config['report-uri'])) {
            $headers[] = sprintf('report-uri %s', $config['report-uri']);
        }

        $key = ! empty($config['report-only'])
            ? 'Content-Security-Policy-Report-Only'
            : 'Content-Security-Policy';

        return [$key => implode('; ', array_filter($headers, 'strlen'))];
    }
public static function getCSPHeader ( array $ config ) : array { $ directives = [ 'default-src' , 'base-uri' , 'connect-src' , 'font-src' , 'form-action' , 'frame-ancestors' , 'frame-src' , 'img-src' , 'manifest-src' , 'media-src' , 'object-src' , 'plugin-types' , 'require-sri-for' , 'sandbox' , 'script-src' , 'style-src' , 'worker-src' , ] ; $ headers = [ ] ; foreach ( $ directives as $ directive ) { if ( isset ( $ config [ $ directive ] ) ) { $ headers [ ] = self :: compileDirective ( $ directive , $ config [ $ directive ] ) ; } } if ( ! empty ( $ config [ 'block-all-mixed-content' ] ) ) { $ headers [ ] = 'block-all-mixed-content' ; } if ( ! empty ( $ config [ 'upgrade-insecure-requests' ] ) ) { $ headers [ ] = 'upgrade-insecure-requests' ; } if ( ! empty ( $ config [ 'report-uri' ] ) ) { $ headers [ ] = sprintf ( 'report-uri %s' , $ config [ 'report-uri' ] ) ; } $ key = ! empty ( $ config [ 'report-only' ] ) ? 'Content-Security-Policy-Report-Only' : 'Content-Security-Policy' ; return [ $ key => implode ( '; ' , array_filter ( $ headers , 'strlen' ) ) ] ; }
Generate CSP header.

@param array $config

@return array
Generate CSP header .