Plik manifestu – Content Security Policy

Opcjonalny klucz pliku manifestu zawiera politykę bezpieczeństwa treści platformy internetowej, która określa ograniczenia dotyczące skryptów, stylów i innych zasobów, z których może korzystać rozszerzenie. W tym kluczu manifestu można zdefiniować osobne opcjonalne zasady dla stron rozszerzeń i stron rozszerzeń w piaskownicy.

Zasada „Strony rozszerzeń” ma zastosowanie do kontekstu strony i instancji roboczych w rozszerzeniu. Obejmuje to wyskakujące okienko rozszerzenia, narzędzie działające w tle oraz karty ze stronami HTML lub elementami iframe, które zostały otwarte przez rozszerzenie. Zasada piaskownicy dotyczy wszystkich stron określonych w pliku manifestu jako strona w piaskownicy.

Domyślna zasada

Jeśli użytkownik nie zdefiniował polityki bezpieczeństwa treści w pliku manifestu, zarówno w przypadku stron rozszerzeń, jak i stron rozszerzeń w piaskownicy będą używane właściwości domyślne.

Te wartości domyślne odpowiadają określonym zasadom w pliku manifestu:

{
  // ...
  "content_security_policy": {
    "extension_pages": "script-src 'self'; object-src 'self';",
    "sandbox": "sandbox allow-scripts allow-forms allow-popups allow-modals; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';"
  }
  // ...
}

W takim przypadku rozszerzenie będzie wczytywać tylko lokalne skrypty i obiekty z własnych zasobów w pakiecie. Komponent WebAssembly zostanie wyłączony, a rozszerzenie nie będzie uruchamiać wbudowanego kodu JavaScript ani oceniać ciągów znaków jako kodu wykonywalnego. Dodana strona w trybie piaskownicy będzie miała bardziej łagodne uprawnienia do oceny skryptów spoza rozszerzenia.

Minimalne i niestandardowe zasady bezpieczeństwa treści

Deweloperzy mogą dodawać i usuwać reguły w swoich rozszerzeniach albo stosować minimalną wymaganą zasadę bezpieczeństwa treści zgodnie z potrzebami projektu.

Zasady dotyczące stron rozszerzeń

Na stronach rozszerzeń Chrome wymusza stosowanie minimalnej zasady bezpieczeństwa treści. Jest to równoważne z określeniem w pliku manifestu tych zasad:

{
  // ...
  "content_security_policy": {
    "extension_pages": "script-src 'self' 'wasm-unsafe-eval'; object-src 'self';"
  }
  // ...
}

Zasada extension_pages nie może być złagodzona powyżej tej minimalnej wartości. Inaczej mówiąc, do dyrektyw nie można dodawać innych źródeł skryptów, np. 'unsafe-eval' do script-src. Jeśli dodasz niedozwolone źródło do zasady rozszerzenia, podczas instalacji Chrome wyświetli błąd podobny do tego:

'content_security_policy.extension_pages': Insecure CSP value "'unsafe-eval'" in directive 'script-src'.

Zasady dotyczące stron w trybie piaskownicy

Domyślna zasada w przypadku stron w trybie piaskownicy jest znacznie mniej restrykcyjna niż w przypadku stron rozszerzeń, ponieważ nie ma ona dostępu do interfejsów API rozszerzeń ani bezpośredniego dostępu do stron poza tą piaskownicą. Zasadę bezpieczeństwa treści w trybie piaskownicy można dostosować do potrzeb.