Aller au contenu
script-src.com
script-src.com
EN / FR

script-src-elem et script-src-attr

Comment les directives script-src-elem et script-src-attr de CSP Level 3 divisent le contrôle des scripts, et comment elles se replient sur script-src.

CSP Level 3 divise le contrôle des scripts en deux directives plus étroites. script-src-elem régit les éléments <script>, et script-src-attr régit les attributs de gestionnaires d'événements en ligne. Toutes deux se replient sur script-src lorsqu'elles ne sont pas définies, donc la plupart des sites n'ont jamais besoin de les définir directement.

script-src-elem

S'applique aux éléments de script : les <script src> externes et les blocs <script> en ligne.

Content-Security-Policy: script-src-elem 'self' https://cdn.example.com

Lorsqu'elle est présente, elle reprend le chargement des éléments à script-src. C'est utile lorsque vous voulez des règles différentes pour les éléments de script et pour les gestionnaires d'événements, par exemple autoriser un CDN pour <script src> tout en bloquant tous les gestionnaires en ligne.

script-src-attr

S'applique aux attributs de gestionnaires d'événements en ligne tels que onclick, onload et onerror.

Content-Security-Policy: script-src-attr 'none'

script-src-attr 'none' bloque chaque gestionnaire d'événement en ligne tout en laissant vos éléments <script> régis séparément. Un hachage listé ici, combiné à 'unsafe-hashes', peut autoriser des gestionnaires spécifiques.

La chaîne de repli

Pour un script donné, le navigateur choisit la directive la plus spécifique qui est définie :

  1. script-src-elem ou script-src-attr, selon que le script est un élément ou un gestionnaire d'attribut.
  2. script-src, si la directive spécifique n'est pas définie.
  3. default-src, si script-src n'est pas défini non plus.

Ainsi, cette politique bloque les gestionnaires en ligne mais autorise les éléments de script de même origine, car script-src-attr est plus spécifique pour les gestionnaires :

Content-Security-Policy: script-src 'self'; script-src-attr 'none'

Faut-il les utiliser ?

Définissez script-src et vous avez couvert les deux cas. N'utilisez les directives divisées que lorsque vous avez une raison concrète de traiter différemment les éléments et les gestionnaires d'attributs. Conserver un unique script-src est plus facile à auditer.