Ich habe eine Seite, die ich das Skript-src der Inhaltssicherheitsrichtlinie wie folgt festlegen:
%Vor%Wenn ich die Seite mit einem hartcodierten Inline-Skript lade, das ich selbst zum Testen erstellt habe, wird es wie erwartet blockiert:
Es wurde abgelehnt, ein Inline-Skript auszuführen, da es gegen Folgendes verstößt Richtlinie zur Inhaltssicherheitsrichtlinie: "script-src 'self' * .uservoice.com * .intuit.com ajax.googleapis.com localhost: * ". Entweder das 'unsafe-inline' Schlüsselwort, ein Hash ('sha256 -...') oder ein Nonce ('nonce -...') ist erforderlich, um die Inline-Ausführung zu aktivieren.
Wenn ich jedoch ein neues Skript-Tag dynamisch einfüge, wird das Skript nicht blockiert, zum Beispiel wird es weiterhin ausgeführt:
%Vor%Ich verwende Chrome als Browser zum Testen. Ich hatte gehofft, dass dieses Skript ebenfalls blockiert würde, da dies wirklich helfen würde, XSS zu verhindern. Gibt es etwas, das ich ändern kann, um diese Art von Skript-Injektion zu blockieren?
Das Skript, das Sie mit append
oder innerHtml
hinzufügen, wird nur ausgeführt, wenn Sie eval()
verwenden. Es verletzt also nicht CSP.
Obwohl dies wie ein Cross-Site-Scripting-Angriff aussieht, ist das Ergebnis harmlos. HTML5 gibt an, dass ein via innerHTML eingefügtes Tag nicht ausgeführt werden soll. 1
Siehe Skriptelemente, die mit innerHTML eingefügt wurden, werden beim Einfügen nicht ausgeführt.
Tags und Links javascript xss google-chrome content-security-policy