Skip to main content
Choisir un domaine
Language

CSP Builder

Transformez les hotes que cside observe sur votre site en un en-tete Content-Security-Policy pret a deployer, sous Protection > CSP Builder.

CSP Builder transforme les hotes que cside observe sur votre site en un en-tete Content-Security-Policy pret a deployer. Il se trouve sous Protection > CSP Builder dans la barre laterale, a cote de CSP Violations.

Ecrire une Content Security Policy a la main suppose de connaitre chaque hote depuis lequel vos pages chargent des ressources, y compris ceux que vos fournisseurs chargent en votre nom. cside observe deja ces chargements, donc le builder part de ce qui s’est reellement passe sur votre site plutot que d’un fichier vide.

Deploiement progressif

CSP Builder est deploye progressivement. Si vous ne le voyez pas encore dans votre barre laterale, contactez support@cside.dev pour l’activer pour votre equipe.

cside ne sert pas votre politique

Le builder genere l’en-tete. Il ne l’envoie jamais a votre place et ne bloque jamais rien sur votre site. Vous copiez l’en-tete dans la configuration de votre propre serveur, CDN ou framework, et c’est votre serveur qui l’applique.

Choisir un domaine

En ouvrant CSP Builder depuis le niveau equipe, vos domaines s’affichent avec une colonne Script data. Les domaines marques Needs setup n’ont pas encore de donnees de scripts, et ils restent selectionnables : cette page vous montre comment installer le script de surveillance. Selectionnez n’importe quelle ligne pour ouvrir le builder de ce domaine.

Dans le builder, le menu deroulant de domaines en haut permet de changer de domaine sans quitter la page.

La politique suggeree

Le bloc en haut de la page est la reponse que vous etes venu chercher : l’en-tete complet, reconstruit en direct au fur et a mesure de vos modifications. Il contient deux lignes, et vous avez besoin des deux :

  • Content-Security-Policy (ou Content-Security-Policy-Report-Only), votre politique
  • Reporting-Endpoints, qui permet aux violations d’arriver dans votre tableau de bord

Copiez-les avec le bouton a cote du bloc. Copier seulement la premiere ligne donne une politique fonctionnelle qui ne remonte rien a cside.

L’adresse de rapport est construite pour le domaine precis sur lequel vous etes, et elle change selon que cside sert de proxy a ce domaine ou non. Copiez-la toujours depuis la page plutot que de la composer vous-meme, sinon les rapports sont rejetes au lieu d’etre mal classes.

Les politiques longues sont tronquees aux premieres lignes sous un degrade. Selectionnez Show pour tout lire. La copie et le changement de mode fonctionnent meme lorsqu’elle est tronquee.

D’abord report-only, puis enforce

Le selecteur Report-only / Enforce au-dessus du bloc choisit le nom d’en-tete que vous copiez. Le corps de la politique est identique dans les deux cas.

Deployez d’abord l’en-tete report-only. Les navigateurs signaleront ce que la politique aurait bloque sans rien bloquer, et ces rapports arrivent dans CSP Violations pour que vous voyiez ce qui vous a echappe. Une fois cette vue propre, revenez, passez sur Enforce et deployez l’en-tete applique.

La verification « Before you enforce »

Copier l’en-tete applique ouvre une boite de dialogue Before you enforce. Elle vous rappelle qu’appliquer la politique bloque chaque requete qu’elle ne liste pas et vous demande de verifier trois points au prealable :

  1. Les scripts et styles inline. Aucune liste d’hotes ne les autorise. Si vos pages utilisent des blocs <script>, des gestionnaires onclick ou des attributs style, activez les options inline pour ces directives.
  2. Les URL data: et blob:. Courantes pour les icones, les polices et les images inline. Ajoutez-les a img-src, font-src ou media-src si vous les utilisez.
  3. Vos parcours de paiement et de connexion. La politique couvre les pages que les visiteurs ont chargees au cours des 30 derniers jours. Parcourez d’abord vos etapes de paiement et de connexion pour que les fournisseurs qu’elles chargent figurent dans la liste.

Selectionnez Copy enforcing header pour continuer, ou Cancel pour revenir en arriere.

L’interrupteur default-src

Au-dessus des onglets de directives, un interrupteur default-src ‘self’ a l’echelle de la politique ajoute un plancher default-src 'self' a l’en-tete. Il restreint a votre propre origine chaque type de requete que la politique ne liste pas, au lieu de laisser ces types sans restriction. Il est desactive jusqu’a ce que vous l’activiez, et cside recommande de l’activer.

Le plancher ne regit que les directives de recuperation que la politique omet. Il n’atteint jamais frame-ancestors, form-action, base-uri, sandbox ni les directives de reporting, que vous devez donc toujours definir vous-meme.

Passer les directives en revue

cside remplit sept directives a partir de ce qu’il observe : script-src, connect-src, img-src, style-src, frame-src, font-src et media-src. Chacune a son onglet, et vous les passez en revue une par une. Le total sous la politique compte toujours l’en-tete entier, pas seulement l’onglet ouvert.

Chaque onglet porte une marque :

MarqueSignification
Un pointPas encore revue. Personne n’a examine les hotes de cette directive. Elle est reconstruite a partir du trafic actuel chaque fois que vous l’ouvrez, chaque hote etant regle par defaut selon sa classification, et rien de ce que vous desactivez n’est conserve tant que vous n’enregistrez pas
Une cocheRevue et enregistree. Votre decision sur chaque hote que vous avez vu est conservee. Les hotes observes plus tard reviennent proposes actives, voir ci-dessous
Grisee, “no data”cside n’a vu aucun trafic de ce type sur ce domaine, il n’y a donc rien a passer en revue

Passer une directive en revue enregistre vos decisions. C’est tout l’interet de parcourir les onglets : tant que personne n’a enregistre une directive, personne n’a confirme que ses hotes ont leur place dans votre politique, et les interrupteurs que vous basculez sont perdus quand vous quittez la page. Ouvrir l’onglet et enregistrer suffit. Vous n’avez rien a modifier. L’avertissement sous la liste des hotes compte les directives encore non revues, car appliquer une politique que personne n’a revue bloque tout ce que ces directives ont manque.

Selectionnez Save quand vous avez fini avec un onglet. L’enregistrement ne vous deplace pas et conserve votre filtre.

Les hotes qui apparaissent apres l’enregistrement

L’enregistrement ne fige pas une directive sur les hotes que vous avez vus. Il enregistre votre reponse pour ces hotes uniquement. Un hote observe pour la premiere fois apres l’enregistrement n’a jamais fait l’objet d’une decision de votre part, le builder le traite donc de la meme facon dans une directive revue et dans une directive non revue : il revient active, regle par defaut selon sa classification (active pour tout sauf Blocked by you et Flagged malicious), et il est inclus dans l’en-tete affiche en haut de la page. La prochaine fois que vous copiez cet en-tete, le nouvel hote en fait partie, que quelqu’un enregistre de nouveau ou non.

C’est une proposition, pas une modification de votre politique en production : rien n’atteint votre site tant que vous ne deployez pas l’en-tete copie. Activer les nouveaux hotes par defaut evite qu’un fournisseur qui a commence a fonctionner apres votre enregistrement disparaisse silencieusement de votre prochaine copie. A votre retour dans le builder, verifiez les hotes que vous ne reconnaissez pas, desactivez-les et enregistrez de nouveau pour que la decision soit conservee.

Limites d’enregistrement

Une directive peut contenir jusqu’a 5 000 sources, et l’ensemble de la politique enregistree jusqu’a 512 Ko de sources. Un enregistrement qui depasse l’une de ces limites echoue avec une erreur qui nomme la limite. Si vous les atteignez, utilisez les familles de wildcards (ci-dessous) plutot que de lister chaque sous-domaine, ou desactivez les hotes dont vous n’avez pas besoin.

Groupes d’hotes

Au sein d’une directive, les hotes sont regroupes selon la maniere dont cside les classe, et chaque groupe dispose d’un interrupteur global dans son en-tete, sauf mention contraire.

GroupeSignificationActive par defaut
First partyVotre propre domaineOui
Known vendorsUn fournisseur que cside reconnait comme une grande marque reputeeOui
Approved by youUn nom d’hote que votre equipe a approuve dans Resources InventoryOui
UnvettedTout ce que cside n’a pas pu attribuer. C’est le groupe pour lequel la revue existeOui
Blocked by youVotre equipe a bloque cet hoteNon
Flagged maliciouscside a bloque cet hote pour tous ses clientsNon

Unvetted, Blocked by you et Flagged malicious n’ont pas d’interrupteur global. La plupart des hotes de la plupart des domaines atterrissent dans Unvetted, donc un seul interrupteur reecrirait presque toute votre politique sans que personne ne l’examine, et reactiver un hote bloque ou malveillant doit rester une decision prise hote par hote, l’avertissement sous les yeux.

Replier un groupe masque uniquement ses lignes. Les hotes conservent l’etat dans lequel vous les avez laisses, comptent toujours dans le total et entrent toujours dans la politique enregistree. Une recherche deplie tous les groupes, donc un hote que vous cherchez n’est jamais cache derriere un en-tete replie.

Les compteurs d’alertes affiches a cote d’un hote sont informatifs. Une alerte ne change jamais l’etat d’un hote.

*.csidetm.com et *.csidefd.com sont toujours dans la politique et ne peuvent pas etre desactives. Une politique qui bloquerait le script de cside arreterait la surveillance a partir de laquelle elle a ete construite.

Familles de fournisseurs avec wildcard

Lorsqu’un fournisseur sert depuis de nombreux sous-domaines, comme a.vendor.com, b.vendor.com et cdn.vendor.com, le builder les regroupe en une seule ligne *.vendor.com. La ligne de famille a un seul interrupteur et compte comme une seule entree dans la politique. Depliez la ligne pour voir les adresses qu’elle couvre.

Si vous desactivez le wildcard, vous pouvez choisir une par une les adresses exactes dont vous avez besoin, et chacune compte alors comme sa propre entree. Une famille dont les adresses sont deja couvertes par un wildcard plus large que vous avez active n’a pas d’interrupteur propre ; desactivez ce wildcard plus large pour gerer les adresses separement.

Une famille Mixed autorise seulement certaines adresses individuellement. Les nouvelles adresses sont désactivées par défaut. Une famille Covered hérite d’un joker approuvé plus large, sans bouton distinct. Si cside bloque une adresse dans une famille autorisée par joker, la ligne affiche un avertissement : le joker l’autorise toujours dans la CSP générée.

Policy options

Au-dessus de la liste des hotes, Policy options active les mots-cles de source qu’une directive peut porter. Ceux qui apparaissent dependent de la directive que vous modifiez :

Mot-cleEffet
'self'Autorise les ressources servies depuis votre propre origine. Active par defaut et disponible sur toutes les directives
'unsafe-inline'Autorise les blocs inline. Propose sur script-src et style-src, desactive par defaut sur les deux. Sur style-src, il autorise les attributs style et les blocs <style> ; sur script-src, il autorise les blocs <script> et les gestionnaires de type onclick. Chaque interrupteur nomme la consequence : sur script-src, tout script inline de vos pages s’executera, y compris un script injecte dans la page
'report-sample'Inclut un extrait du code bloque dans chaque rapport de violation. Propose sur script-src et style-src, ou il aide a identifier ce qui a ete bloque

Ajouter un hote que cside n’a pas vu

Selectionnez Add a host dans la barre d’outils au-dessus de la liste pour ajouter un nom d’hote a la main. Utilisez-le pour un hote dont vous savez que votre site a besoin mais qui n’est pas encore apparu dans le trafic, par exemple un fournisseur que vous allez lancer ou une ressource qui ne charge que sur une page que cside ne surveille pas.

Les entrees sont validees par rapport a la directive que vous modifiez. Les noms d’hote sont acceptes partout, avec un joker *. en tete si necessaire. data: et blob: ne sont acceptes que sous img-src, font-src et media-src. Les ports, chemins, schemas et mots-cles entre guillemets sont refuses.

Si vous envoyez deja une CSP

Lorsque cside a observe un en-tete Content-Security-Policy sur le domaine, un encadre apparait au-dessus de la politique et montre celui vu le plus souvent au cours des 30 derniers jours.

Fusionnez notre politique avec la votre plutot que de remplacer votre en-tete. Le builder ne remplit que les directives qu’il peut appuyer sur du trafic observe, donc une politique generee ici n’a rien a dire sur frame-ancestors, form-action, base-uri ou object-src. Remplacer tout votre en-tete par celui-ci supprime chaque directive que vous appliquiez deja et pour laquelle nous ne faisons aucune suggestion.

La politique affichee dans l’encadre est ce que cside a observe, pas votre configuration serveur. Les nonces et les chaines de requete sont normalises en jokers, et elle peut differer de l’en-tete reel d’une page donnee : comparez-la a votre configuration plutot que de la copier.

Avant de deployer

  • Deployez d’abord l’en-tete report-only et surveillez CSP Violations avant d’appliquer
  • Parcourez tous les onglets de directives. L’avertissement sous la liste des hotes indique combien restent a revoir et vous rappelle qu’appliquer la politique bloquerait tout ce qu’elles ont manque
  • Revenez apres le deploiement. Les hotes observes apres votre enregistrement reviennent actives et entrent dans le prochain en-tete que vous copiez, passez-les donc en revue et enregistrez de nouveau
  • Copiez les deux lignes, la politique et Reporting-Endpoints
  • Fusionnez-la avec votre en-tete existant plutot que de le remplacer

Pages associees

  • Ajuster votre CSP : rapports de violations CSP, limites de retention et export des rapports
  • Ajouter cside a votre CSP : ce qu’il faut changer dans une politique que vous maintenez deja pour que le script cside continue de fonctionner
  • Inventaire des ressources : passez en revue et approuvez des noms d’hote. Les noms d’hote approuves arrivent ici dans le groupe Approved by you
Was this page helpful?