Présentation de script-src
Ce que fait la directive CSP script-src, où elle se place et comment elle se replie sur default-src.
script-src contrôle les sources à partir desquelles un navigateur peut charger
et exécuter du JavaScript. Elle se définit via l'en-tête de réponse
Content-Security-Policy et constitue la directive centrale pour bloquer le
cross-site scripting (XSS) : dès qu'elle est présente, une balise <script>
injectée ou un gestionnaire d'événement en ligne ne s'exécute pas, sauf si vous
l'avez explicitement autorisé.
Où elle se place
script-src est une directive au sein de l'en-tête Content-Security-Policy.
Envoyez l'en-tête sur la réponse HTML :
Content-Security-Policy: script-src 'self' https://cdn.example.com
Cette politique autorise les scripts servis depuis l'origine de la page
elle-même et depuis https://cdn.example.com, et bloque tout le reste, y compris
tous les scripts en ligne.
Une liste de sources est séparée par des espaces
La valeur qui suit script-src est une liste d'expressions de source séparées
par des espaces. Un script est autorisé s'il correspond à au moins une entrée :
Content-Security-Policy: script-src 'self' https://cdn.example.com 'nonce-r4nd0m'
L'ensemble complet des valeurs utilisables figure dans la référence des listes de sources.
Repli sur default-src
Si vous ne définissez pas script-src, le navigateur se replie sur
default-src pour les requêtes de script. Ces deux politiques se comportent de
façon identique pour les scripts :
Content-Security-Policy: default-src 'self'
Content-Security-Policy: default-src 'none'; script-src 'self'
Définir explicitement script-src remplace default-src uniquement pour les
scripts. Les autres types de ressources continuent d'utiliser default-src. En
raison de ce repli, une base stricte courante consiste à combiner
default-src 'none' avec un script-src explicite, de sorte que chaque type de
ressource soit refusé tant que vous ne l'autorisez pas.
script-src est elle-même une valeur de repli
En CSP niveau 3, script-src sert de repli pour deux directives plus étroites :
script-src-elemcouvre les éléments<script>.script-src-attrcouvre les attributs de gestionnaire d'événement en ligne tels queonclick.
Si vous ne les définissez pas, les deux utilisent script-src. La plupart des
sites n'ont besoin que de script-src.
Étapes suivantes
- Autorisez des scripts en ligne précis avec un nonce ou un hachage.
- Gérez de grandes arborescences de scripts tiers avec
strict-dynamic. - Consultez les erreurs de console que produit un script bloqué.