(standard) Content Security Policy

Jeśli nie korzystasz jeszcze z Content Security Policy (CSP), dobrym punktem wyjścia będzie Wprowadzenie do zasad bezpieczeństwa treści. Dokument ten obejmuje szerszy widok CSP na platformie internetowej. Technologia CSP dla aplikacji Chrome nie jest tak elastyczna.

CSP to zasada, która eliminuje problemy ze skryptami z innych witryn. Wszyscy wiemy, że taki skrypt jest zły. Nie będziemy próbowali przekonać Cię, że CSP to nowa zasada, która ma charakter ciepły i ciepły. Wymaga to pracy i musisz nauczyć się, jak wykonywać podstawowe zadania inaczej.

Wyjaśniamy w nim, jakie zasady dotyczące CSP obowiązują w przypadku aplikacji Chrome, co trzeba zrobić, aby ich przestrzegać oraz jak nadal wykonywać te podstawowe zadania w sposób zgodny z CSP.

Co to jest CSP dla aplikacji Chrome?

Polityka bezpieczeństwa treści dla aplikacji Chrome ogranicza możliwość:

  • Na stronach aplikacji Chrome nie można używać wbudowanych skryptów. Ograniczenie dotyczy zarówno <script> blokad, jak 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 zasobów wideo i audio). W elemencie iframe nie możesz umieszczać zewnętrznych zasobów.
  • Nie możesz używać metod z ciągu znaków na kod JavaScript, takich jak eval() czy new Function().

Można to zrobić 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 plików multimedialnych (aplikacje mogą odwoływać się do materiałów wideo i audio poza pakietem). Rozszerzenia Chrome pozwolą Ci złagodzić domyślną politykę bezpieczeństwa treści, a Aplikacje Chrome – nie.

Jak zachować zgodność z zasadami CSP

Cały JavaScript i wszystkie zasoby powinny być lokalne (wszystko jest spakowane w aplikacji Chrome).

„Ale potem jak...”

Bardzo możliwe, że używasz bibliotek szablonów i wiele z nich nie będzie działać z CSP. Możesz również skorzystać z zasobów zewnętrznych w aplikacji (obrazy zewnętrzne, treści ze stron internetowych).

Używanie bibliotek szablonów

Skorzystaj z biblioteki, która zawiera wstępnie skompilowane szablony, i gotowe. Możesz korzystać z biblioteki, która nie oferuje wstępnej kompilacji, ale wymaga od Ciebie wykonania pewnych czynności i obowiązują pewne ograniczenia.

Musisz użyć trybu piaskownicy, aby odizolować wszystkie treści, które chcesz „ocenić”. Piaskownica zwiększa CSP w przypadku określonych przez Ciebie treści. Jeśli chcesz korzystać w aplikacji Chrome z zaawansowanych interfejsów API Chrome, nie możesz bezpośrednio z nich korzystać (patrz Treści lokalne w piaskownicy).

Dostęp do zasobów zdalnych

Możesz pobierać zasoby zdalne z usługi XMLHttpRequest i udostępniać je przy użyciu adresów URL blob:, data: lub filesystem: (zobacz Odsyłanie do zasobów zewnętrznych).

Wideo i audio może być wczytywane z usług zdalnych, ponieważ działają one prawidłowo w trybie offline lub przy słabym połączeniu z siecią.

Umieszczanie treści internetowych

Zamiast używać elementu iframe, możesz wywoływać zewnętrzny adres URL za pomocą tagu WebView (patrz Umieszczanie zewnętrznych stron internetowych).