Политика безопасности контента: настройки страницы заблокировали загрузку ресурса на себя?


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

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

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

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

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

2 ответа:

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

Список 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'. Это все равно что сказать: "разрешите все, разрешите встроенное и разрешите эвал".

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

Источники:

Попробуйте:

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