Plik manifestu – piaskownica

Ostrzeżenie: od wersji 57 Chrome nie będzie już zezwalać na zewnętrzne treści internetowe (w tym umieszczone ramki i skrypty) na stronach w piaskownicy. Użyj komponentu WebView.

Określa zbiór stron aplikacji lub rozszerzeń, które mają być wyświetlane w ramach unikatowego pochodzenia w piaskownicy, oraz opcjonalnie zasady bezpieczeństwa treści, których mają one używać. Użycie piaskownicy ma 2 konsekwencje:

  1. Strona w piaskownicy nie ma dostępu do interfejsów API rozszerzeń ani aplikacji ani bezpośredniego dostępu do stron niebędących w piaskownicy (może się z nimi komunikować za pomocą interfejsu postMessage()).
  2. Strona w piaskownicy nie podlega zasadom Content Security Policy (CSP) stosowanym przez pozostałą część aplikacji lub rozszerzenia (ma ona własną wartość CSP). Oznacza to, że może ona na przykład używać skryptu w ciele wiadomości i elementu eval.

    Oto przykład określenia, że 2 strony rozszerzenia mają być wyświetlane w piaskownicy z niestandardowym 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 wartości, domyślną wartością content_security_policy będzie sandbox allow-scripts allow-forms allow-popups allow-modals; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';. Aby jeszcze bardziej ograniczyć piaskownicę, możesz określić wartość CSP, ale musi ona zawierać dyrektywę sandbox i nie może zawierać znacznika allow-same-origin (możliwe znaczniki piaskownicy znajdziesz w specyfikacji HTML5). Ponadto podany przez Ciebie CSP może nie zezwalać na wczytywanie treści zewnętrznych na stronach w piaskownicy.

Pamiętaj, że musisz podać tylko te 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ą być widoczne na liście sandboxed_page, ponieważ będą korzystać z piaskownicy strony, na której są osadzone.

„Using eval in Chrome Extensions. Bezpiecznie.” zawiera szczegółowe informacje o wdrażaniu procesu piaskownicy, który umożliwia korzystanie z bibliotek, które w innym przypadku mogłyby mieć problemy z wykonaniem w ramach domyślnych zasad Content Security Policy rozszerzenia.

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