← HTTP — sécurité avancée, 40 leçons de cours

Module 21 / 40 · 90 min

21. CSP : politique de chargement et déploiement progressif

Définir une politique compatible avec les besoins démontrés de la page.

Votre progression apparaîtra ici lorsque JavaScript est actif.

La progression et le meilleur score sont enregistrés uniquement dans ce navigateur. Aucun compte n’est nécessaire ; effacer les données du navigateur les supprime. Les durées de modules sont indicatives et incluent les exercices.

Comprendre le mécanisme

Content Security Policy restreint des sources et comportements du document selon ses directives. Une politique de script peut réduire les conséquences de certaines injections, sans corriger tous les défauts de rendu ni supprimer l’autorisation serveur. default-src fournit une valeur de repli pour certaines directives de chargement, mais pas pour toutes les directives. Une politique doit donc être lue dans son ensemble plutôt qu’assimilée à un mot-clé magique.

Raisonner et vérifier

Commencez par l’inventaire des ressources et des scripts réellement nécessaires. Le mode Report-Only permet d’observer des violations sans promettre un blocage. Réduisez les exceptions, vérifiez les parcours dynamiques puis activez une politique imposée. Les rapports peuvent révéler des URL ou des fragments de contexte : définissez collecte, minimisation et accès au lieu d’envoyer aveuglément ces données vers un tiers.

Observer avant bloquer

Report-Only observe une politique sans la bloquer. L’observation permet un déploiement progressif mais ne constitue pas le blocage. Report-Only produit une observation des violations selon ce mode sans imposer le blocage correspondant. Utilisez-le pour préparer une politique, puis vérifiez séparément la politique d’application effectivement envoyée.

Erreur fréquente à comprendre

Report-Only garantit le blocage de chaque violation.

L’observation permet un déploiement progressif mais ne constitue pas le blocage.

Ressources nécessaires

Une CSP doit correspondre aux ressources nécessaires. Les dépendances et contextes du site doivent être inventoriés. Inventoriez scripts, styles, images et connexions réellement utilisés. Une politique trop large perd son intérêt ; une politique trop stricte non testée peut casser connexion, paiement ou affichage des erreurs.

Erreur fréquente à comprendre

Une politique copiée garantit tous les parcours.

Les dépendances et contextes du site doivent être inventoriés.

Génération du nonce

Le nonce doit provenir d’une génération maîtrisée. Le serveur doit garder la maîtrise de la valeur admise. Le nonce doit venir d’un hasard cryptographique et suivre la réponse concernée. Une valeur fixe ou issue d’un timestamp permettrait de prévoir la capacité d’exécution que la politique essaie de limiter.

Erreur fréquente à comprendre

Une entrée utilisateur peut choisir le nonce de confiance.

Le serveur doit garder la maîtrise de la valeur admise.

Encodage conservé

Une CSP ne remplace pas l’échappement contextuel. Les points de sortie doivent rester contrôlés. La CSP ne transforme pas une concaténation HTML dangereuse en donnée sûre. Corrigez les points d’injection et le contexte de sortie même lorsqu’un script de démonstration semble bloqué par le navigateur.

Erreur fréquente à comprendre

La présence d’un champ CSP corrige toutes les injections.

Les points de sortie doivent rester contrôlés.

Pages d’erreur

Les pages d’erreur peuvent nécessiter leur propre vérification. Les réponses et ressources peuvent différer selon le parcours. Une erreur peut passer par un autre template ou un autre composant. Vérifiez ses headers et ressources aussi, afin que le chemin dégradé ne perde pas la politique de la page nominale.

Erreur fréquente à comprendre

Tester l’accueil prouve toutes les CSP d’administration.

Les réponses et ressources peuvent différer selon le parcours.

Rapports minimisés

Les rapports peuvent contenir des données à minimiser. Le diagnostic peut contenir des URL ou informations sensibles. Les rapports de violation peuvent exposer des URL ou fragments de contexte. Limitez collecte, accès et conservation ; le canal de diagnostic doit être traité comme un traitement de données propre.

Erreur fréquente à comprendre

Tout rapport CSP peut être publié sans examen.

Le diagnostic peut contenir des URL ou informations sensibles.

Directives distinctes

Des directives ont des rôles différents. Les directives ciblent des catégories différentes. script-src, connect-src et frame-ancestors ne contrôlent pas les mêmes capacités. Expliquez chaque choix et ses règles de repli ; default-src n’est pas une réponse universelle à toutes les directives.

Erreur fréquente à comprendre

script-src contrôle à lui seul toutes les intégrations de frames.

Les directives ciblent des catégories différentes.

Politique reçue

Une politique effective doit être observée dans la réponse. Le trajet final et ses intermédiaires comptent. Inspectez les headers après passage par les proxies et les éventuelles politiques multiples. Une ligne dans le code source de configuration ne prouve pas le résultat effectivement interprété par le client.

Erreur fréquente à comprendre

Un fichier de configuration suffit à prouver son déploiement.

Le trajet final et ses intermédiaires comptent.

Inline

Les ressources inline demandent une politique adaptée. Sa position dans la page ne suffit pas à établir son origine. Les scripts inline demandent une admission précise, par exemple nonce ou hash selon le cas. Évitez d’ajouter unsafe-inline pour résoudre une panne sans comprendre la capacité plus large ainsi réintroduite.

Erreur fréquente à comprendre

Tout script inline est automatiquement de confiance.

Sa position dans la page ne suffit pas à établir son origine.

Retrait d’exception

Le retrait d’une exception doit être testé. Élargir une liste de sources peut affaiblir la restriction. Après suppression d’une origine admise, testez la fonctionnalité légitime et le refus du chargement retiré. Une politique peut sembler renforcée tout en laissant un autre chemin équivalent autorisé.

Erreur fréquente à comprendre

Ajouter des jokers partout durcit nécessairement la CSP.

Élargir une liste de sources peut affaiblir la restriction.

Atelier guidé : lire, expliquer et vérifier le code

Content-Security-Policy-Report-Only: script-src 'self'

Le navigateur observe un script qui violerait cette politique.

La réponse contient seulement une politique Report-Only et le navigateur observe une violation potentielle. Ne concluez pas que le script a été bloqué par cette politique. Comparez observation et application dans un laboratoire, puis vérifiez que le parcours nominal continue de fonctionner sous la politique appliquée.

Le mode d’observation ne fournit pas le blocage de la politique. C’est la distinction de ce mode. Le nom complet et son mode comptent. Un diagnostic ne modifie pas les points d’injection.

Travail pratique : Inventoriez les ressources d’une page de laboratoire, déployez une politique d’observation puis une politique bloquante minimale compatible.

Critères de correction : Testez chargement normal, module JavaScript, téléchargement et ressource refusée. Distinguez rapport reçu et blocage effectif. Retirez les permissions non justifiées et vérifiez que les rapports ne contiennent pas de secrets métier.

Exemple commenté

Content-Security-Policy: default-src 'self'; object-src 'none'; base-uri 'none'; frame-ancestors 'self'

Ce fragment illustre plusieurs restrictions. Sa pertinence dépend des ressources de la page ; il n’est pas une configuration universelle à copier en production.

Exercice de mise en pratique

Inventoriez les ressources d’une page de laboratoire, déployez une politique d’observation puis une politique bloquante minimale compatible.

Voir une proposition de correction

Testez chargement normal, module JavaScript, téléchargement et ressource refusée. Distinguez rapport reçu et blocage effectif. Retirez les permissions non justifiées et vérifiez que les rapports ne contiennent pas de secrets métier.

Points de vérification

  • Lire les directives individuellement.
  • Distinguer observation et application.
  • Limiter les exceptions.

Contrôle de connaissances

Cours associé : 21. CSP : politique de chargement et déploiement progressif ↗
Une politique Report-Only bloque-t-elle nécessairement les violations observées ?

Documentation de référence ↗

Validation du module

101 questions, objectif pédagogique de 75 %. Durée conseillée de 150 minutes, sans limite imposée. Les questions et les choix sont mélangés ; le corrigé apparaît après validation. Le contrôle rapide de la leçon et l’examen final du cours restent des exercices distincts.

Commencer ou reprendre les 101 questions →