Plik manifestu – piaskownica

Definiuje zbiór stron rozszerzeń, które mają być wyświetlane w unikalnych źródłach w trybie piaskownicy. Zasada bezpieczeństwa treści stosowana przez strony rozszerzenia w trybie piaskownicy jest określona w kluczu "content_security_policy".

Piaskownica ma 2 konsekwencje:

  1. Strona w trybie piaskownicy nie ma dostępu do interfejsów API rozszerzeń ani bezpośredniego dostępu do stron spoza tego środowiska (może się z nimi komunikować za pomocą postMessage()).
  2. Strona w trybie piaskownicy nie podlega standardowi bezpieczeństwa Content Security Policy (CSP), z którego korzysta pozostałą część rozszerzenia (ma własną, osobną wartość). Oznacza to na przykład, że może korzystać ze skryptu wbudowanego i funkcji eval().

Możesz na przykład określić, jak określić, że 2 strony rozszerzeń mają być wyświetlane w piaskownicy z niestandardowym CSP:

{
  ...
  "content_security_policy": {
    "sandbox": "sandbox allow-scripts; script-src 'self' https://example.com"
  },
  "sandbox": {
    "pages": [
      "page1.html",
      "directory/page2.html"
    ]
  },
  ...
}

Jeśli nie podasz żadnej wartości, domyślną wartością parametru "content_security_policy" będzie sandbox allow-scripts allow-forms allow-popups allow-modals; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';.

Możesz podać wartość CSP, aby jeszcze bardziej ograniczyć piaskownicę, ale MUSI zawierać dyrektywę "sandbox" i NIE MOŻE zawierać tokena allow-same-origin (informacje o możliwych tokenach piaskownicy znajdziesz w specyfikacji HTML5).

Musisz podać tylko te strony, które powinny zostać załadowane w oknach lub ramkach. Zasoby używane przez strony w piaskownicy (np. arkusze stylów lub pliki źródłowe JavaScript) nie muszą pojawiać się na liście pages, ponieważ używają piaskownicy ramki, w której są umieszczone.

Artykuł „Korzystanie z eval() w rozszerzeniach do Chrome” zawiera więcej informacji na temat implementowania przepływu pracy w trybie piaskownicy umożliwiającego korzystanie z bibliotek, w przypadku których problemy nie byłyby wykonywane w ramach domyślnej zasady Content Security Policy rozszerzenia.