Jeśli nie korzystasz jeszcze z Content Security Policy (CSP), Wprowadzenie do Content Security Policy Zasady to dobry punkt wyjścia. Ten dokument przedstawia szersze spojrzenie na CSP na platformach internetowych. CSP aplikacji Chrome nie jest wystarczająco elastyczny.
CSP to zasada, która eliminuje problemy z atakami typu cross-site scripting. Wszyscy wiemy, skrypt jest kiepski. Nie próbujemy przekonywać użytkowników, że CSP to nowe, niezobowiązujące zasady. Niezbędna jest praca. musisz się nauczyć, jak inaczej wykonywać podstawowe zadania.
W tym dokumencie szczegółowo wyjaśniamy zasady CSP dla aplikacji Chrome oraz które trzeba spełnić, by do nich stosować, oraz o tym, jak wykonywać te podstawowe zadania tak, zgodne ze standardem CSP.
Czym jest CSP dla aplikacji Chrome?
Polityka zabezpieczeń treści w aplikacjach Chrome uniemożliwia wykonywanie tych czynności:
- Na stronach aplikacji Chrome nie można używać wbudowanych skryptów. Ograniczenie powoduje zablokowanie obu
<script>
blokad i modułów obsługi zdarzeń (<button onclick="...">
). - W plikach aplikacji nie możesz odwoływać się do zasobów zewnętrznych (z wyjątkiem plików wideo i audio) ). Nie możesz umieszczać zasobów zewnętrznych w elemencie iframe.
- Nie możesz używać metod zamiany ciągu znaków na JavaScript, takich jak
eval()
inew Function()
.
Jest to implementowane za pomocą tej wartości zasady:
default-src 'self';
connect-src * data: blob: filesystem:;
style-src 'self' data: 'unsafe-inline';
img-src 'self' data:;
frame-src 'self' data:;
font-src 'self' data:;
media-src * data: blob: filesystem:;
Aplikacja Chrome może odwoływać się tylko do skryptów i obiektów w aplikacji (z wyjątkiem multimediów) plików (aplikacje mogą odnosić się do wideo i dźwięku poza pakietem). Zrelaksuj się dzięki rozszerzeniom do Chrome domyślną zasadę Content Security Policy; Aplikacje Chrome już nie.
Jak zachować zgodność z zasadami CSP
Cały JavaScript i wszystkie zasoby powinny być zapisane lokalnie (wszystko jest spakowane w aplikacji Chrome).
„Ale jak...”
Bardzo możliwe, że używasz bibliotek szablonów. Wiele z nich nie będzie współpracować z CSP. Możesz również potrzebować dostępu do zasobów zewnętrznych w aplikacji (obrazów zewnętrznych, treści ze stron internetowych).
Korzystanie z bibliotek szablonów
Skorzystaj z biblioteki, która zawiera gotowe szablony. Nadal możesz korzystać z biblioteki, która nie oferuje wstępnej kompilacji, ale wymagają one trochę pracy i obowiązują ograniczenia.
Aby odizolować treści, które chcesz ocenić, musisz zastosować piaskownicę. różne rzeczy. Piaskownica podnosi CSP w przypadku określonych treści. Jeśli chcesz korzystać z zaawansowanych funkcji Chrome interfejsów API w aplikacji Chrome, treści w piaskownicy nie mogą wchodzić w bezpośrednią interakcję z tymi interfejsami (zobacz Treści lokalne w trybie piaskownicy).
Dostęp do zasobów zdalnych
Zasoby zdalne możesz pobierać za pomocą interfejsu XMLHttpRequest
i udostępniać za pomocą protokołów blob:
, data:
lub
filesystem:
adresy URL (patrz Odwołanie do zasobów zewnętrznych).
Wideo i audio można ładować z usług zdalnych, ponieważ mają one dobre działanie zastępcze offline lub w przypadku problemów z łącznością.
Umieszczanie treści z internetu
Zamiast używać elementu iframe, możesz wywołać zewnętrzny adres URL za pomocą tagu WebView (zobacz Umieszczanie zewnętrznych stron internetowych).