Что именно делает значение http-Equiv 'Content-Security-Policy'?

Я создаю мобильное приложение с помощью Apache Cordova / Adobe Phonegap, и этот фрагмент кода был создан автоматически. Это дает мне эту ошибку в консоли внутри Google Chrome.

Отказался от загрузки таблицы стилей https://fonts.googleapis.com/css?family=Open+Sans ', потому что это нарушает следующую директиву политики безопасности контента: "style-src' self '' unsafe-inline '".

Что именно делает этот элемент HTML meta?

<meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-inline'; style-src 'self' 'unsafe-inline'; media-src *" />

person CloudBranch    schedule 20.08.2016    source источник


Ответы (2)


Краткий ответ: если вы хотите, чтобы таблица стилей https://fonts.googleapis.com/css?family=Open+Sans загружалась браузерами, а не блокировалась, измените значение content элемента meta так, чтобы оно выглядело так:

<meta http-equiv="Content-Security-Policy"
    content="default-src * 'unsafe-inline';
    style-src 'self' https://fonts.googleapis.com/ 'unsafe-inline'; media-src *" />

Более длинное объяснение

Этот элемент meta http-equiv="Content-Security-Policy" обеспечивает Политику безопасности контента, в которой указаны некоторые ограничения. от какого источника браузеры могут загружать ресурсы страницы и какие виды браузеров содержимого JavaScript и CSS позволяют странице указывать встроенные.

Что касается конкретной части этих ограничений, относящейся к цитируемому вами сообщению, то это ограничение style-src 'self', которое имеет значение «Разрешить загрузку внешних таблиц стилей только из того же источника (та же схема + хост + порт), с которым обслуживается страница. от".

Итак, поскольку ваша страница пытается загрузить https://fonts.googleapis.com/css?family=Open+Sans - таблицу стилей из другого источника, чем сама страница, - и ваш meta http-equiv="Content-Security-Policy" включает ограничение, которое гласит: «Не делайте этого», тогда браузеры подчиняются этому ограничению и отказываются загружать эту таблицу стилей, и сообщение, которое вы цитируете, регистрируется.

person sideshowbarker    schedule 20.08.2016

Тег <meta> предоставляет метаданные (данные о данных) о веб-странице. Он не отображается на странице, но анализируется браузером.

Подробнее о теге <meta> читайте здесь.

Что касается рассматриваемого метатега, метатег Content-Security-Policy позволяет снизить риск XSS-атак, позволяя определять, откуда могут быть загружены ресурсы, предотвращая загрузку данных браузерами из любых других мест. Это затрудняет злоумышленнику внедрение вредоносного кода на ваш сайт, как указано в this ответ.

person Timothy G.    schedule 20.08.2016
comment
Я проголосовал за объяснение, но это не отвечает на мой вопрос. - person CloudBranch; 20.08.2016
comment
@JoshuaWhalen Пожалуйста, не поощряйте ответы не по теме, злоупотребляя своим правом голоса. - person Rob; 20.08.2016