Jak złagodzić Politykę bezpieczeństwa treści w Chrome?

18

Ostatnio niektóre strony internetowe, takie jak Facebook, stosują Politykę bezpieczeństwa treści (CSP) w celu ograniczenia ładowania skryptów z „niezaufanych źródeł”. Na przykład podczas żądania treści HTML z Facebooka (np. Https://www.facebook.com ) odpowiedź HTTP Facebooka zawiera następujący nagłówek odpowiedzi:

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;

Ma to wpływ na niektóre bookmarklety, które wymagają ładowania i uruchamiania bibliotek JavaScript z niezaufanych źródeł.

Na przykład za każdym razem, gdy próbuję uruchomić bookmarklet Show Anchors na stronie na Facebooku, wykonanie tego bookmarkletu kończy się niepowodzeniem, ponieważ próbuje załadować jQuery z niezaufanego źródła. W konsoli programisty Chrome powie:

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".

Znalazłem stronę dokumentacji Chrome na ten temat, ale dotyczy ona tylko rozszerzeń Chrome .

Szukam rozwiązań, które mi na to pozwolą

  • albo jednorazowo dezaktywuj CSP
  • lub na stałe umieść na białej liście moje zaufane źródła.
Abdull
źródło
@ Rudie Czy to zadziała w Chrome Mobile?
Michael
@ Michael Jeśli Chrome Mobile obsługuje nowoczesne rozszerzenia. WeRequest jest dość nowy. Nie używam Chrome Mobile, więc nie mam pojęcia.
Rudie

Odpowiedzi:

2

Metody zatwierdzone przez aplikacje Chrome

Użyj bibliotek szablonów

Skorzystaj z biblioteki, która oferuje wstępnie skompilowane szablony i gotowe. Nadal możesz korzystać z biblioteki, która nie oferuje wstępnej kompilacji, ale będzie to wymagać trochę pracy z twojej strony i istnieją ograniczenia.

Będziesz musiał użyć piaskownicy, aby wyodrębnić dowolną zawartość, której chcesz dokonać „ewaluacji” rzeczy. Piaskownica podnosi CSP do określonej zawartości.

Lokalna zawartość w piaskownicy

Piaskownica pozwala na wyświetlanie określonych stron w piaskownicowym, unikalnym źródle. Strony te są następnie zwolnione z Polityki bezpieczeństwa treści. Strony w piaskownicy mogą używać ramek iframe, wbudowanych skryptów i eval () (a ostatnie dwa są blokowane). To naprawi „niebezpieczne-wbudowane” i „niebezpieczne-bezpieczne”.

  • Używaj wbudowanych skryptów w piaskownicy
  • Uwzględnij piaskownicę w manifeście

Uzyskaj dostęp do zdalnych zasobów

Możesz pobrać zasoby zdalne za pomocą XMLHttpRequest i obsłużyć je za pomocą obiektów blob :, data: lub systemu plików: adresów URL. To powinno naprawić problem pobierania jQuery.

Wymóg manifestu

Aby móc wykonać cross-origin XMLHttpRequests, musisz dodać pozwolenie dla hosta zdalnego adresu URL.

Pochodzenie krzyżowe XMLHttpRequest

Pobierz zdalny adres URL do aplikacji i podaj jego zawartość jako blob:adres URL.


Nie sądzę, żebyś mógł zrobić którąkolwiek z nich. Aby naprawić nagłówki unsafe-evali unsafe-inlineodpowiedzi, tylko właściciel skryptu może naprawić kod lub jeśli jest to domena publiczna, możesz go naprawić. Wszystko to jest prawdopodobnie jednorazową poprawką.


Hacki

Niebezpieczne okno

http://wiki.greasespot.net/UnsafeWindow

Zastrzyk skryptu treści

http://wiki.greasespot.net/Content_Script_Injection


Jednak włamania mają swoje wady, ponieważ z pewnością powodują dziury w zabezpieczeniach co najmniej pierwszego.

do tego kawa
źródło
0

Możesz edytować te ustawienia na karcie treści, do której możesz uzyskać bezpośredni dostęp, wpisując chrome://settings/contentw pasku adresu. Możesz dodać do białej listy określone domeny dla określonych typów treści.

Gman Smith
źródło
9
Gdzie dokładnie to zrobić i jak to zrobić w ustawieniach treści? Próbowałem dodać swoją witrynę do „wyjątków dotyczących plików cookie i danych witryny” bez żadnego efektu. Żadne z pozostałych ustawień nie wydaje się odpowiednie.
Michael