Проблемы с политикой безопасности содержания облачных служб Google

У меня есть статический веб-сайт, размещенный в корзине, которую я обслуживаю через платформу Google.

Это сайт работает без проблем около 6 месяцев, но в течение последнего месяца у меня периодически возникали проблемы с тем, что он не загружал таблицы стилей и скрипты из-за проблем с "Безопасность содержимого" - это приводит к тому, что в браузере отображается только текст главной страницы без стиля и без функциональности (на основе Javascript). Под прерывистым режимом я подразумеваю, что он работает нормально пару часов, а затем пару часов выходит из строя.

Для этой службы не существует «веб-сервера», поскольку я просто обслуживаю статические страницы из корзины - хотя я понимаю, что у Google должен быть свой собственный сервер, который этим занимается.

Проверяя консоль разработчика в браузере, я вижу следующие проблемы для всех таблиц стилей, скриптов и шрифтов, которые использует веб-страница:

Refused to load the stylesheet XXXXXXX because it violates the following Content Security Policy directive: "default-src 'none'". Note that 'style-src-elem' was not explicitly set, so 'default-src' is used as a fallback. 

Я думаю, что мои настройки Content Security верны:

   <meta http-equiv="Content-Security-Policy" content="
         default-src 'self'; 
         img-src 'self'
            https://syndication.twitter.com;
         font-src 'self'    
            https://use.fontawesome.com
            https://fonts.gstatic.com
            https://fonts.googleapis.com;
         script-src 'self' 'unsafe-inline'
            https://stackpath.bootstrapcdn.com 
            https://connect.facebook.net
            https://platform.twitter.com
            https://code.jquery.com
            https://cdnjs.cloudflare.com; 
         style-src 'self' 'unsafe-inline'
            https://stackpath.bootstrapcdn.com 
            https://use.fontawesome.com 
            https://fonts.googleapis.com;
         frame-src 'self'   
            https://www.facebook.com
            https://connect.facebook.net
            https://platform.twitter.com
            https://www.youtube.com;
   ">  

Это ссылки в случае сбоя, каждый «внешний» включает подпись с импортом, чтобы гарантировать, что «настоящая» вещь загружена.

    <!-- Bootstrap core CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">

    <!-- Font Awesome -->
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.2.0/css/all.css" integrity="sha384-hWVjflwFxL6sNzntih27bfxkr27PmbbK/iSvJ+a4+0owXq79v+lsFkW54bOGbiDQ" crossorigin="anonymous">

    <!-- Custom fonts for this template -->
    <link href='https://fonts.googleapis.com/css?family=Titillium+Web' rel='stylesheet' type='text/css'>
    <link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>

Может ли кто-нибудь увидеть, что я делаю неправильно, или дать какие-либо советы о том, как заставить это работать постоянно?

2
задан 23 April 2020 в 17:52
1 ответ

Как было предложено в разделе комментариев @Bruno, эта проблема уже решена в этом вопросе. Для удобства использования я копирую (со ссылками) два решения, которые, как подтвердили пользователи, сработали;

Решение 1

<meta http-equiv="Content-Security-Policy" content="default-src * self blob: data: gap:; style-src * self 'unsafe-inline' blob: data: gap:; script-src * 'self' 'unsafe-eval' 'unsafe-inline' blob: data: gap:; object-src * 'self' blob: data: gap:; img-src * self 'unsafe-inline' blob: data: gap:; connect-src self * 'unsafe-inline' blob: data: gap:; frame-src * self blob: data: gap:;">

Предупреждение: Это делает документ уязвимым для многих уязвимостей. Вот подробное объяснение возможных угроз безопасности и эксплуатации.

Решение 2

Чтобы уточнить это, добавление

script-src 'self' http://somedomain 'unsafe-inline' 'unsafe-eval';

к метатегу, например

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; script-src 'self' https://somedomain.com/ 'unsafe-inline' 'unsafe-eval';  media-src *">

, устраняет ошибку.

1
ответ дан 9 November 2020 в 14:36

Теги

Похожие вопросы