Политика безопасности содержимого. Параметры страницы заблокировали загрузку ресурса самостоятельно?

У меня есть веб-приложение на основе Java, работающее на Tomcat 6. Мое приложение работает на localhost и на порту 9001.

Чтобы сделать мое приложение более безопасным и снизить риск XSS, я добавил заголовок Content-Security-Policy со значением по умолчанию -src * 'unsafe-inline' 'небезопасно-eval'; script -src 'self'. С этим я хочу разрешить веб-приложению загружать файлы JavaScript из одного домена.

Для других ресурсов он продолжает загружаться так же, как и без этого заголовка.

Но я получаю ошибку ниже.

Content Security Policy: The page settings blocked the loading of a resource at self ("script-src http://localhost:9001").

Ответ 1

Заголовок политики безопасности содержимого - это белый список доверенных источников.

Список default-src - это список, используемый всеми другими списками *-src. Если его нет, по умолчанию используется default-src: *, что означает, что "все содержимое разрешено из любого места", что не обеспечивает никакой защиты от XSS.

Поэтому вы должны начать с

  • default-src none, чтобы все содержимое было запрещено, или
  • default-src 'self', так что разрешено только содержимое вашего домена.

После этого другие *-src могут быть заменены по мере необходимости. Например, следующие доверяют себе для всего, кроме изображений, и изображения разрешены только с example.com(но не от "я" ):

default-src 'self'; img-src example.com;

В вашем вопросе вы указываете default-src * 'unsafe-inline' 'unsafe-eval';, который может вызвать проблему, поскольку * уже подразумевает 'unsafe-inline' и 'unsafe-eval'. Это как сказать "разрешить все и разрешить встроенный и разрешить eval".

Также обратите внимание, что CSP поддерживается через X-Content-Security-Header в IE >= 8.

Источники:

Ответ 2

Try:

default-src * 'unsafe-inline' 'unsafe-eval';script-src 'self' 'unsafe-inline' 'unsafe-eval'