Parlons de votre projet
Partitech Sonata Extra Bundle

Sonata Extra Bundle : configurer une Content Security Policy

Introduction La Content Security Policy (CSP) est un mécanisme de sécurité du navigateur qui aide à réduire les risques de Cross-Site Scripting (XSS) et d’injection de contenu. Le bundle Sonata-Extra pour Symfony offre un moyen efficace de mettre en œuvre ...

Introduction

La Content Security Policy (CSP) est un mécanisme de sécurité du navigateur qui aide à réduire les risques de Cross-Site Scripting (XSS) et d’injection de contenu. Le bundle Sonata-Extra pour Symfony offre un moyen efficace de mettre en œuvre et de gérer la CSP dans votre application.

Comprendre la Content Security Policy

La CSP est transmise par un en-tête de réponse et permet de contrôler les ressources que votre page web peut charger ou exécuter. En spécifiant une liste de sources fiables, vous pouvez réduire le risque d'injections de contenu malveillant.

Concepts clés

  • Directives : Ce sont les règles qui définissent quelles ressources peuvent être chargées. Chaque directive contrôle un type spécifique de ressource, comme les scripts, les styles, les images, etc.
  • Sources : Sous chaque directive, vous spécifiez des sources (comme des URL) à partir desquelles la ressource peut être chargée.

Types de sécurité dans le bundle Sonata-Extra

Dans Sonata Extra Bundle, SECURITY_TYPES est un tableau constant qui associe les directives CSP à leurs clés de configuration. Voici une répartition de chaque directive :

default-src

Repli par défaut pour la plupart des directives. Contrôle les sources par défaut pour différents types de contenu.

script-src

Définit les sources valides pour JavaScript. Les options incluent :

  • 'self': Ne charger les scripts que depuis la même origine.
  • 'unsafe-inline': Autoriser les scripts en ligne, bien que ce soit moins sûr.
  • URL spécifiques : Définissez les scripts externes autorisés.

style-src

Spécifie les sources valides pour les feuilles de style. Options similaires à script-src.

img-src

Contrôle les sources à partir desquelles les images peuvent être chargées.

connect-src

Limite les origines auxquelles vous pouvez vous connecter (par exemple, WebSockets, requêtes AJAX).

font-src

Définit les sources des fichiers de polices.

object-src

Contrôle les sources pour des éléments tels que <object>, <embed>, etc.

media-src

Spécifie les sources pour le chargement des médias (audio et vidéo).

frame-src

Détermine les sources valides pour les frames et les iframes.

Autres directives

  • child-src, form-action, frame-ancestors, manifest-src, base-uri, sandbox, report-uri, worker-src, navigate-to: Ceux-ci affinent davantage les politiques pour des cas d'utilisation spécifiques.

Mise en œuvre de la CSP dans le bundle Sonata-Extra

Configuration

Définissez vos politiques CSP dans un fichier de configuration YAML sous partitech_sonata_extra. Par exemple :

partitech_sonata_extra:
  content_security_policy:
    object-src:
      - 'none'
    script-src:
      - 'self'
      - 'unsafe-inline'
      - 'https://external.script.url'
    style-src:
      - 'self'
      - 'unsafe-inline'
      - 'https://external.stylesheet.url'
    font-src:
      - 'self'
      - 'https://cdnjs.cloudflare.com/'
      - 'https://fonts.gstatic.com/'

Valider la politique avant son déploiement

Configuration de la Content Security Policy

Résultat de la Content Security Policy

Commencez par observer les violations en mode rapport, puis resserrez les sources autorisées. Une CSP ne remplace ni l’échappement des sorties ni la validation des entrées.

Partager cet article