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