Plik manifestu – piaskownica

Ostrzeżenie: od wersji 57 Chrome nie będzie już zezwalać na wyświetlanie zewnętrznych treści z internetu (w tym osadzonych ramek i skryptów) na stronach w piaskownicy. Zamiast tego użyj widoku WebView.

Określa zbiór stron aplikacji lub rozszerzenia, które mają być wyświetlane w piaskownicy o unikalnym pochodzeniu, oraz opcjonalnie (standard) Content Security Policy, która ma być z nimi używana. Korzystanie z piaskownicy ma 2 konsekwencje:

  1. Strona w piaskownicy nie będzie mieć dostępu do interfejsów API rozszerzenia ani aplikacji ani bezpośredniego dostępu do stron poza piaskownicą (może się z nimi komunikować za pomocą funkcji postMessage() ).
  2. Strona w piaskownicy nie podlega zasadom bezpieczeństwa treści Content Security Policy (CSP) używanym przez resztę aplikacji lub rozszerzenia (ma własną wartość CSP). Oznacza to, że może na przykład używać skryptu wbudowanego i funkcji eval.

    Oto na przykład, jak określić, że 2 strony rozszerzenia mają być wyświetlane w piaskownicy z niestandardową zasadą CSP:

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

    Jeśli nie podasz żadnej opcji, 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ć piaskownicę, ale musi ona zawierać dyrektywę sandbox i nie może zawierać tokena allow-same-origin (możliwe tokeny piaskownicy znajdziesz w specyfikacji HTML5). Ponadto określona przez Ciebie zasada CSP nie może zezwalać na wczytywanie zewnętrznych treści internetowych na stronach w piaskownicy.

Pamiętaj, że musisz podać tylko strony, które mają być wczytywane w oknach lub ramkach. Zasoby używane przez strony w piaskownicy (np.arkusze stylów lub pliki źródłowe JavaScript) nie muszą znajdować się na liście sandboxed_page. Będą one korzystać z piaskownicy strony, która je osadza.

Więcej informacji o wdrażaniu przepływu pracy w piaskownicy, który umożliwia korzystanie z bibliotek, które w przeciwnym razie miałyby problemy z wykonywaniem w ramach domyślnej zasady bezpieczeństwa treści rozszerzenia, znajdziesz w artykule „Using eval in Chrome Extensions. Safely." goes into more detail about implementing a sandboxing workflow that enables use of libraries that would otherwise have issues executing under extension's default Content Security Policy.

Stronę w piaskownicy można określić tylko wtedy, gdy używasz manifest_version 2 lub nowszej.