Plik manifestu – piaskownica

Definiuje zbiór stron rozszerzeń, które mają być wyświetlane w unikalnym źródle piaskownicy. Zasady Content Security Policy używane przez strony w trybie piaskownicy rozszerzenia są określone w sekcji "content_security_policy".

Piaskownica ma dwie konsekwencje:

  1. Strona w piaskownicy nie ma dostępu do interfejsów API rozszerzeń ani bezpośredniego dostępu do strony poza piaskownicą (mogą komunikować się z nimi za pomocą postMessage()).
  2. Strona w piaskownicy nie podlega zasadom Content Security Policy (CSP) stosowanym przez resztę rozszerzenie (ma własną, oddzielną wartość CSP). Oznacza to, że na przykład użyj wbudowanego skryptu i eval().

Poniżej pokazujemy na przykład, jak określić, że 2 strony rozszerzeń mają być wyświetlane w piaskownicy z parametrem niestandardowy 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ślna wartość "content_security_policy" to sandbox allow-scripts allow-forms allow-popups allow-modals; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';.

Możesz określić wartość CSP, aby jeszcze bardziej ograniczyć zakres piaskownicy, ale MUSI zawierać parametr "sandbox" i NIE MOŻE mieć tokena allow-same-origin (przeczytaj tag HTML5 specyfikacji możliwych tokenów piaskownicy).

Pamiętaj, że wystarczy podać tylko te strony, które powinny być ładowane w oknach lub ramkach. Zasoby używanych przez strony w trybie piaskownicy (np. arkusze stylów lub pliki źródłowe JavaScript) nie muszą pojawiać się pages, ponieważ będą korzystać z piaskownicy ramki, która je zawiera.

„Korzystanie z eval() w rozszerzeniach do Chrome” zawiera więcej informacji o implementowaniu przepływ pracy w piaskownicy, który umożliwia korzystanie z bibliotek, które w innym przypadku powodowałyby problemy domyślną zasadę Content Security Policy rozszerzenia.