Как установить script-src в упакованном приложении Chrome?

Я пытаюсь создать упакованное приложение Chrome из сложного веб-приложения. В настоящее время я получаю сообщение об ошибке:

Отказано в выполнении встроенного обработчика событий, поскольку он нарушает следующую директиву политики безопасности контента: «default-src 'self' chrome-extension-resource:». Обратите внимание, что «script-src» не был задан явно, поэтому «default-src» используется как запасной вариант.

Как явно установить политику в файле manifest.json? Я пробовал такие вещи, как:

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

но я все еще получаю то же сообщение об ошибке. Является ли мой синтаксис неправильным, или ошибка является отвлекающим маневром?


person Ellen Spertus    schedule 18.05.2013    source источник


Ответы (2)


Вы не можете ослабить CSP по умолчанию в упакованном приложении. Если вы делаете что-то вроде <button id="foo" onclick="doSomething()">, вам следует вместо этого включить отдельный файл JS в HTML, где вы выполняете document.querySelector("#foo").onclick = doSomething; в своем обработчике загрузки. Это будет соответствовать CSP и сделает ваше приложение более устойчивым к XSS-атакам.

person sowbug    schedule 18.05.2013
comment
Я боялся этого. Я бы хотел, чтобы они просто сказали это, а не подразумевали, что я могу явно указать другой вариант. - person Ellen Spertus; 20.05.2013
comment
Справедливое замечание. Я думаю, что происходит то, что предупреждение срабатывает для CSP по умолчанию, поэтому нам (разработчикам Chromium) необходимо обновить его в исходном коде. С вашей точки зрения, как разработчика, предупреждение — это зуд, который вы не можете унять. Я посмотрю. - person sowbug; 20.05.2013
comment
Спасибо. Я также, кажется, получаю сообщение, даже если я пытаюсь явно установить политику безопасности. - person Ellen Spertus; 22.05.2013
comment
@sowbug, это единственный способ? Разве не должны быть какие-то настройки, которые мы могли бы использовать для включения встроенных скриптов? - person Pacerier; 20.06.2015
comment
Нет. Это был ранний компонент модели безопасности для приложений Chrome. Это неудобно, если вы импортируете сторонние скрипты, которые не были созданы с учетом рисков безопасности встроенных скриптов. Но компромисс заключается в получении расширенных возможностей приложений Chrome, которые недоступны в открытом Интернете (пока). - person sowbug; 27.06.2015

Я столкнулся с той же проблемой и, читая этот документ, обнаружил следующее:

"sandbox": {
    "pages": ["sandboxed.html"]
}
person McAgee    schedule 19.01.2015