web-dev-qa-db-ger.com

Das Skript wurde nicht geladen, weil es gegen die folgende Richtlinie zur Richtlinie zur Inhaltssicherheit verstößt

Hallo, als ich versuchte, meine App auf Geräten mit einem Android-System über 5.0.0 bereitzustellen, wurde diese Fehlermeldung angezeigt:

07-03 18: 39: 21.621: D/SystemWebChromeClient (9132): file: ///Android_asset/www/index.html: Zeile 0: Das Laden der .__-Datei wurde verweigert. Skript ' http: // xxxxx ', weil es den folgenden Inhalt verletzt Richtlinie zur Sicherheitsrichtlinie: "script-src 'self' 'unsafe-eval' 'Unsafe-inline'". 07-03 18: 39: 21,621: I/Chrom (9132): [INFO: CONSOLE (0)] "Das Skript ' http: // xxx ' wurde nicht geladen, weil es die folgende Richtlinie für Inhaltssicherheitsrichtlinie verletzt:" script-src 'self' 'unsafe-eval' 'unsafe-inline' ".

Wenn ich es jedoch auf einem mobilen Gerät mit Android-System 4.4.x implementiert habe, funktioniert die Sicherheitsrichtlinie mit den Standardrichtlinien:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">

Dann dachte ich mir, vielleicht sollte ich so etwas ändern:

<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-eval' 'unsafe-inline'; object-src 'self'; style-src 'self' 'unsafe-inline'; media-src *">

Grundsätzlich funktioniert beides nicht für mich. Hat jemand eine Idee, wie man dieses Problem lösen kann? 

Vielen Dank!

48
MangooSaSa

gelöst mit

script-src 'self' http://xxxx 'unsafe-inline' 'unsafe-eval'; 
10
MangooSaSa

Versuchen Sie, Ihr Meta-Tag durch folgendes zu ersetzen:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' http://* 'unsafe-inline'; script-src 'self' http://* 'unsafe-inline' 'unsafe-eval'" />

Oder zusätzlich zu dem, was Sie haben, sollten Sie http://* sowohl zu style-src als auch zu script-src hinzufügen.

Wenn Ihr Server einen Content-Security-Policy-Header enthält, überschreibt der Header das Meta.

41
Ashikodi

Die automatische Antwort, die MagngooSasa gegeben hat, hat den Trick getan, aber für alle anderen, die versuchen, die Antwort zu verstehen, sind hier noch ein paar weitere Details:

Bei der Entwicklung von Cordova-Apps mit Visual Studio habe ich versucht, eine entfernte Javascript-Datei [hier http://Guess.What.com/MyScript.js] zu importieren, hatte jedoch den im Titel genannten Fehler. 

Hier ist das Meta-Tag VOR in der Datei index.html des Projekts 

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">

Hier ist das CORRECTED-Meta-Tag, um das Importieren eines Remote-Skripts zu ermöglichen: 

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *;**script-src 'self' http://onlineerp.solution.quebec 'unsafe-inline' 'unsafe-eval';** ">

und kein fehler mehr!

31
Simon

Wir haben das benutzt:

<meta http-equiv="Content-Security-Policy" content="default-src gap://ready file://* *; style-src 'self' http://* https://* 'unsafe-inline'; script-src 'self' http://* https://* 'unsafe-inline' 'unsafe-eval'">
4
simprão

Um mehr über dieses Hinzufügen zu erfahren 

script-src 'self' http://somedomain 'unsafe-inline' 'unsafe-eval';    

Um das Meta-Tag so

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; script-src 'self' https://somedomain.com/ 'unsafe-inline' 'unsafe-eval';  media-src *">

Behebt den Fehler

2
James Nicholson

Für alle, die nach einer vollständigen Erklärung suchen, empfehle ich Ihnen, einen Blick auf die Inhaltssicherheitsrichtlinie zu werfen: https://www.html5rocks.com/de/tutorials/security/content-security-policy/

"Code von https://mybank.com sollte nur Zugriff auf die Daten von https://mybank.com haben und https://evil.example.com sollte sicherlich nie Zugriff gewährt werden. Jeder Ursprung wird vom Rest des Webs isoliert. "

XSS-Angriffe basieren darauf, dass der Browser den Code Ihrer App nicht von Code unterscheidet, der von einer anderen Website heruntergeladen wurde. Daher müssen Sie die Inhaltsursprungsquellen mit dem Content-Security-Policy-HTTP-Header in die Positivliste aufnehmen, von der Sie sicher sind, dass sie Inhalte herunterladen kann.

Diese Richtlinie wird mit einer Reihe von Richtlinienrichtlinien beschrieben, von denen jede die Richtlinie für einen bestimmten Ressourcentyp oder Richtlinienbereich beschreibt. Ihre Richtlinie sollte eine Richtlinie zur Standard-src-Richtlinie enthalten. Dies ist ein Rückfall für andere Ressourcentypen, wenn sie keine eigenen Richtlinien haben.

Wenn Sie also Ihr Tag ändern, ändern Sie Folgendes:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *;**script-src 'self' http://onlineerp.solution.quebec 'unsafe-inline' 'unsafe-eval';** ">

Sie geben an, dass Sie die Ausführung des Javacsript-Codes (script-src) Aus den Ursprüngen 'self', http://onlineerp.solution.quebec, 'unsafe-inline', 'unsafe-eval' zulassen.

Ich schätze, dass die ersten beiden für Ihren Anwendungsfall richtig gültig sind. Ich bin etwas unsicher über die anderen. 'unsafe-line' und 'unsafe-eval' stellen ein Sicherheitsproblem dar. Sie sollten sie also nicht verwenden, es sei denn, Sie haben einen besonderen Bedarf:

"Wenn eval und dessen Text-to-JavaScript-Brüder für Ihre Anwendung absolut unerlässlich sind Sie können sie aktivieren, indem Sie" unsafe-eval "als zulässige -Quelle in einer script-src-Direktive hinzufügen. Bitte nicht . Durch das Verbot der Ausführung von Zeichenfolgen ist es für Angreifer viel schwieriger. __ Unberechtigten Code auf Ihrer Website auszuführen. " (Mike West, Google)

Das Hinzufügen eines Meta-Tags zum Ignorieren dieser Richtlinie hat uns nicht geholfen, da unser Webserver Content-Security-Policy-Header in die Antwort einfügt.

In unserem Fall verwenden wir Ngnix als Webserver für Tomcat9-Java-basierte Anwendungen. Vom Webserver wird der Browser angewiesen, inline scripts nicht zuzulassen. Für einen vorübergehenden Test haben wir Content-Security-Policy durch Kommentieren deaktiviert.

Wie in ngnix ausschalten?

  • Standardmäßig fügt ngnix ssl.conf der Antwort diesen Header hinzu.

    #> grep 'Content-Security' -ir /etc/nginx/global/ssl.conf add_header Content-Security-Policy "default-src 'none'; frame-ancestors 'none'; script-src 'self'; img-src 'self'; style-src 'self'; base-uri 'self'; form-action 'self';";

  • Wenn Sie nur diese Zeile kommentieren und ngnix neu starten, sollte der Antwort kein Header hinzugefügt werden.

Wenn Sie Bedenken hinsichtlich der Sicherheit oder der Produktion haben, befolgen Sie diese Schritte bitte nicht, sondern nur zu Testzwecken und zum Fortfahren.

0
prem