vendor/nelmio/security-bundle/src/EventListener/XssProtectionListener.php line 38

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /*
  4.  * This file is part of the Nelmio SecurityBundle.
  5.  *
  6.  * (c) Nelmio <[email protected]>
  7.  *
  8.  * For the full copyright and license information, please view the LICENSE
  9.  * file that was distributed with this source code.
  10.  */
  11. namespace Nelmio\SecurityBundle\EventListener;
  12. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  13. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  14. use Symfony\Component\HttpKernel\KernelEvents;
  15. /**
  16.  * @deprecated since NelmioSecurityBundle 3.4.0, to be removed in 4.0.
  17.  */
  18. final class XssProtectionListener implements EventSubscriberInterface
  19. {
  20.     private bool $enabled;
  21.     private bool $modeBlock;
  22.     private ?string $reportUri;
  23.     public function __construct(bool $enabledbool $modeBlock, ?string $reportUri null)
  24.     {
  25.         $this->enabled $enabled;
  26.         $this->modeBlock $modeBlock;
  27.         $this->reportUri $reportUri;
  28.         trigger_deprecation('nelmio/security-bundle''3.4.0''The "%s" class is deprecated, use Content Security Policy without allowing "unsafe-inline" scripts instead.'__CLASS__);
  29.     }
  30.     public function onKernelResponse(ResponseEvent $e): void
  31.     {
  32.         if (!$e->isMainRequest()) {
  33.             return;
  34.         }
  35.         $response $e->getResponse();
  36.         if ($response->isRedirection()) {
  37.             return;
  38.         }
  39.         $value '0';
  40.         if ($this->enabled) {
  41.             $value '1';
  42.             if ($this->modeBlock) {
  43.                 $value .= '; mode=block';
  44.             }
  45.             if (null !== $this->reportUri) {
  46.                 $value .= '; report='.$this->reportUri;
  47.             }
  48.         }
  49.         $response->headers->set('X-XSS-Protection'$value);
  50.     }
  51.     public static function getSubscribedEvents(): array
  52.     {
  53.         return [KernelEvents::RESPONSE => 'onKernelResponse'];
  54.     }
  55.     /**
  56.      * @phpstan-param array{enabled: bool, mode_block: bool, report_uri: string|null} $config
  57.      */
  58.     public static function fromConfig(array $config): self
  59.     {
  60.         $enabled $config['enabled'];
  61.         $modeBlock $config['mode_block'];
  62.         $reportUri $config['report_uri'];
  63.         return new self($enabled$modeBlock$reportUri);
  64.     }
  65. }