← 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.

Lessons, exercises and questions in this path are in French. The interface follows the site language.

Your progress will appear here when JavaScript is active.

Progress and best score are stored only in this browser. No account is needed; clearing browser data removes them. Module times are estimates including exercises.

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.

Understand this common mistake

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.

Understand this common mistake

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.

Understand this common mistake

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.

Understand this common mistake

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.

Understand this common mistake

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.

Understand this common mistake

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.

Understand this common mistake

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.

Understand this common mistake

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.

Understand this common mistake

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é.

Understand this common mistake

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.

Worked example

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.

Practical exercise

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

View a suggested solution

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.

Verification checklist

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

Knowledge check

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

Reference documentation ↗

Module validation

101 questions, local practice target of 75%. Suggested duration of 150 minutes, with no enforced deadline. Questions and choices are shuffled; corrections appear after submission. The quick lesson check and the final course exam remain separate exercises.

Start or resume the 101 questions →