In letzter Zeit verwenden einige Websites wie Facebook die Content Security Policy (CSP), um das Laden von Skripten aus "nicht vertrauenswürdigen Quellen" zu beschränken. Wenn Sie beispielsweise Facebook-HTML-Inhalte (z. B. https://www.facebook.com ) anfordern , enthält die HTTP-Antwort von Facebook den folgenden Antwortheader:
x-webkit-csp:default-src *;script-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* chrome-extension://lifbcibllhkdhoafpjfnlhfpfgnpldfl 'unsafe-inline' 'unsafe-eval' https://*.akamaihd.net http://*.akamaihd.net;style-src * 'unsafe-inline';connect-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.spotilocal.com:* https://*.akamaihd.net ws://*.facebook.com:* http://*.akamaihd.net;
Dies hat Auswirkungen auf einige Lesezeichen, die das Laden und Ausführen von Javascript-Bibliotheken aus nicht vertrauenswürdigen Quellen erfordern.
Wenn ich beispielsweise versuche, das Show Anchors- Lesezeichen auf einer Facebook-Seite auszuführen , schlägt die Ausführung dieses Lesezeichens fehl, da versucht wird, jQuery von einer nicht vertrauenswürdigen Quelle zu laden. In der Entwicklerkonsole von Chrome wird Folgendes angezeigt:
Refused to load the script 'http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js' because it violates the following Content Security Policy directive: "script-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* chrome-extension://lifbcibllhkdhoafpjfnlhfpfgnpldfl 'unsafe-inline' 'unsafe-eval' https://*.akamaihd.net http://*.akamaihd.net".
Ich suche nach Lösungen, die es mir ermöglichen
- entweder für eine einmalige Deaktivierung von CSP
- oder meine vertrauenswürdigen Quellen dauerhaft auf die weiße Liste setzen.
quelle
Antworten:
Von Chrome Apps unterstützte Methoden
Verwenden Sie Vorlagenbibliotheken
Verwenden Sie eine Bibliothek, die vorkompilierte Vorlagen bietet, und Sie können loslegen. Sie können immer noch eine Bibliothek verwenden, die keine Vorkompilierung bietet, für die jedoch einige Arbeiten erforderlich sind und für die es Einschränkungen gibt.
Sie müssen Sandboxing verwenden, um alle Inhalte zu isolieren, für die Sie "eval" -Dinge ausführen möchten. Sandboxing hebt den CSP für den von Ihnen angegebenen Inhalt auf.
Sandbox lokaler Inhalt
Mit Sandboxing können bestimmte Seiten in einem eindeutigen Sandbox-Ursprung bereitgestellt werden. Diese Seiten sind dann von ihrer Inhaltssicherheitsrichtlinie ausgenommen. Sandbox-Seiten können Iframes, Inline-Scripting und eval () verwenden (und die letzten beiden werden verhindert). Das behebt 'unsafe-inline' und 'unsafe-eval'.
Greifen Sie auf Remote-Ressourcen zu
Sie können Remote-Ressourcen über XMLHttpRequest abrufen und über blob :, data: oder filesystem: URLs bereitstellen. Dies sollte das jQuery-Abrufproblem beheben.
Offensichtliche Anforderung
Um Cross-Origin
XMLHttpRequests
ausführen zu können, müssen Sie eine Berechtigung für den Host der Remote-URL hinzufügen.Kreuzherkunft
XMLHttpRequest
Rufen Sie die Remote-URL in die App ab und stellen Sie deren Inhalt als
blob:
URL bereit.Ich glaube nicht, dass Sie irgendetwas davon machen können. Um die Header
unsafe-eval
und dieunsafe-inline
Antwort zu korrigieren, kann nur der Skriptbesitzer den Code korrigieren, oder wenn er gemeinfrei ist, können Sie ihn korrigieren. All dies ist wahrscheinlich eine einmalige Lösung.Hacks
UnsafeWindow
http://wiki.greasespot.net/UnsafeWindow
Content Script Injection
http://wiki.greasespot.net/Content_Script_Injection
Die Hacks haben jedoch Nachteile, da sie bekanntermaßen zumindest die erste Sicherheitslücke verursachen, definitiv.
quelle
Sie können diese Einstellungen auf der Registerkarte Inhalt bearbeiten, auf die Sie direkt zugreifen können, indem Sie
chrome://settings/content
in die Adressleiste tippen. Sie können bestimmte Domains für bestimmte Inhaltstypen auf die Whitelist setzen.quelle