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:
- 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()
). - 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.