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


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.