Als ich versuchte, meine App auf Geräten mit einem Android-System über 5.0.0 ( Lollipop ) bereitzustellen , wurden immer wieder folgende Fehlermeldungen angezeigt:
07-03 18: 39: 21.621: D / SystemWebChromeClient (9132): Datei: ///android_asset/www/index.html: Zeile 0: Das Laden des Skripts 'http: // xxxxx' wurde abgelehnt, da es den folgenden Inhalt verletzt Sicherheitsrichtlinie: "script-src 'self' 'unsafe-eval' 'unsafe-inline'". 07-03 18: 39: 21.621: I / chrom (9132): [INFO: CONSOLE (0)] "Das Laden des Skripts 'http: // xxx' wurde abgelehnt, da es gegen die folgende Richtlinie zur Inhaltssicherheitsrichtlinie verstößt:" script- src 'self' 'unsicher-eval' 'unsicher-inline' ".
Wenn ich es jedoch auf einem mobilen Gerät mit dem Android-System 4.4.x ( KitKat ) bereitgestellt 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, ich sollte vielleicht zu so etwas wechseln:
<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 funktionieren beide Optionen bei mir nicht. Wie kann ich dieses Problem lösen?
quelle
Antworten:
Versuchen Sie, Ihr Meta-Tag durch das folgende zu ersetzen:
Oder zusätzlich zu dem, was Sie haben, sollten Sie
http://*
zu beiden hinzufügenstyle-src
undscript-src
wie oben gezeigt nach 'Selbst' hinzufügen.Wenn Ihr Server den
Content-Security-Policy
Header enthält, überschreibt der Header das Meta.quelle
Die von MagngooSasa gegebene Selbstantwort hat es geschafft, aber für alle anderen, die versuchen, die Antwort zu verstehen, gibt es hier ein paar weitere Details:
Bei der Entwicklung von Cordova- Apps mit Visual Studio habe ich versucht, eine Remote-JavaScript-Datei [hier http://Guess.What.com/MyScript.js] zu importieren, aber der im Titel erwähnte Fehler ist aufgetreten.
Hier ist das Meta- Tag zuvor in der Datei index.html des Projekts:
Hier ist das korrigierte Meta-Tag, um das Importieren eines Remote-Skripts zu ermöglichen:
Und kein Fehler mehr!
quelle
Es wurde gelöst mit:
quelle
Wir haben das benutzt:
quelle
Für alle, die eine vollständige Erklärung suchen, empfehle ich Ihnen, sich die Inhaltssicherheitsrichtlinie anzusehen: https://www.html5rocks.com/en/tutorials/security/content-security-policy/ .
XSS-Angriffe basieren auf der Unfähigkeit des Browsers, den Code Ihrer App von Code zu unterscheiden, der von einer anderen Website heruntergeladen wurde. Daher müssen Sie mithilfe des
Content-Security-Policy
HTTP-Headers die Inhaltsursprünge auflisten , von denen Sie annehmen, dass sie sicher heruntergeladen werden können .Diese Richtlinie wird mithilfe einer Reihe von Richtlinienanweisungen beschrieben, von denen jede die Richtlinie für einen bestimmten Ressourcentyp oder Richtlinienbereich beschreibt. Ihre Richtlinie sollte eine default-src-Richtlinienanweisung enthalten. Dies ist ein Fallback für andere Ressourcentypen, wenn sie keine eigenen Richtlinien haben.
Wenn Sie also Ihr Tag ändern in:
Sie sagen , dass Sie die Ausführung von Code Javacsript autorisieren (
script-src
) von den Ursprüngen'self'
,http://onlineerp.solution.quebec
,'unsafe-inline'
,'unsafe-eval'
.Ich denke, dass die ersten beiden für Ihren Anwendungsfall zutreffend sind, bei den anderen bin ich mir etwas unsicher.
'unsafe-line'
und'unsafe-eval'
stellen ein Sicherheitsproblem dar, daher sollten Sie sie nicht verwenden, es sei denn, Sie haben einen ganz bestimmten Bedarf an ihnen:quelle
Vollständige Berechtigungszeichenfolge
Die vorherigen Antworten haben mein Problem nicht behoben, da sie nicht gleichzeitig
blob: data: gap:
Schlüsselwörter enthalten. Also hier ist eine Zeichenfolge, die Folgendes tut:Warnung: Dadurch wird das Dokument vielen Exploits ausgesetzt. Vergewissern Sie sich, dass Benutzer keinen Code in der Konsole ausführen oder sich in einer geschlossenen Umgebung wie einer Cordova- Anwendung befinden.
quelle
Um dies näher zu erläutern, fügen Sie hinzu
zum Meta-Tag wie so,
behebt den Fehler.
quelle
Das Hinzufügen des Meta-Tags zum Ignorieren dieser Richtlinie hat uns nicht geholfen, da unser Webserver den
Content-Security-Policy
Header in die Antwort eingefügt hat.In unserem Fall verwenden wir Ngnix als Webserver für eine Tomcat 9 Java-basierte Anwendung. Vom Webserver aus wird der Browser angewiesen
inline scripts
, dies nicht zuzulassen. Daher haben wir für einen vorübergehenden Test dasContent-Security-Policy
Kommentieren deaktiviert.So schalten Sie es in ngnix aus
Standardmäßig wird in der Datei ngnix ssl.conf der Antwort ein Header hinzugefügt:
#> 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 diese Zeile nur kommentieren und ngnix neu starten, sollte der Header nicht zur Antwort hinzugefügt werden.
quelle
Der wahrscheinliche Grund, warum Sie diesen Fehler erhalten, ist wahrscheinlich, dass Sie den Ordner / build zu Ihrer .gitignore-Datei hinzugefügt oder ihn im Allgemeinen nicht in Git eingecheckt haben.
Wenn Sie also den Heroku- Master auf Git drücken , wird der Build-Ordner, auf den Sie verweisen, nicht auf Heroku übertragen. Und deshalb zeigt es diesen Fehler.
Dies ist der Grund, warum es lokal ordnungsgemäß funktioniert, jedoch nicht, wenn Sie es in Heroku bereitgestellt haben.
quelle