2013-05-18 16 views
7

Próbuję utworzyć aplikację w pakiecie Chrome ze skomplikowanej aplikacji internetowej. Aktualnie otrzymuję komunikat o błędzie:Jak ustawić skrypt-src w aplikacji w pakiecie Chrome?

Refused to execute inline event handler because it violates the following Content Security Policy directive: "default-src 'self' chrome-extension-resource:". Note that 'script-src' was not explicitly set, so 'default-src' is used as a fallback.

Jak jawnie ustawić zasady w moim pliku manifest.json? Próbowałem rzeczy takie jak:

"content_security_policy": "default-src 'inline'; script-src 'inline'" 

, ale nadal otrzymuję ten sam komunikat o błędzie. Czy moja składnia jest błędna, czy też błąd jest czerwonym śledziem?

Odpowiedz

14

Nie można poluzować domyślnego CSP w aplikacji w pakiecie. Jeśli robisz coś takiego, jak <button id="foo" onclick="doSomething()">, powinieneś zamiast tego umieścić oddzielny plik JS w kodzie HTML, w którym wykonujesz document.querySelector("#foo").onclick = doSomething; w module obsługi onload. Będzie to zgodne z CSP i sprawi, że Twoja aplikacja będzie bardziej odporna na ataki XSS.

+2

Bałem się, że. Szkoda, że ​​nie powiedzieliby tego, zamiast sugerować, że mogę wyraźnie ustawić inną opcję. –

+1

Sprawiedliwy punkt. Myślę, że dzieje się tak, że ostrzeżenie jest uruchamiane dla * domyślnego * CSP, więc my (programiści Chromium) musimy zaktualizować go w kodzie źródłowym. Z twojej perspektywy, jako programista, ostrzeżenie to swędzenie, którego nie można zera. Zobaczę. – sowbug

+0

Dzięki. Wydaje mi się, że otrzymuję komunikat, nawet jeśli próbuję jawnie ustawić zasady bezpieczeństwa. –

1

I w obliczu tego samego problemu, a ja podczas czytania this document znalazłem następujące:

"sandbox": { 
    "pages": ["sandboxed.html"] 
} 
Powiązane problemy