Content Security Policy — это новый стандарт, который направлен на то, чтобы защитить пользователя от угроз межсайтового выполнения сценариев.

Не буду пересказывать то, что уже хорошо написано в интернетах. Хорошо пишут в журнале Хакера.

Вот так выглядит мой набор правил CSP который разрешает (картинки, стили, скрипты):

  • медиа ресурсы самого сайта
  • коды счетчиков: Google Analitics и Яндекс.Метрика
  • онлайн-консультант JivoSite
  • Google карты

Код обработчика

namespace OlegPro;
 
class Headers
{
 
    /**
     * Set additional headers for CSP
     */
    public static function addForFilter()
    {
 
        foreach (array('Content-Security-Policy', 'X-Content-Security-Policy', 'X-WebKit-CSP') as $nameHeader) {
 
            header(sprintf(
                "%s: default-src 'self' data: http://googleads.g.doubleclick.net http://www.google.com/ads/user-lists/ http://www.google.ru/ads/user-lists/ http://mc.yandex.ru; script-src 'self' 'unsafe-inline' 'unsafe-eval' http://www.google-analytics.com http://maps.google.com http://*.gstatic.com:* http://*.googleapis.com http://code.jivosite.com http://mc.yandex.ru http://www.googleadservices.com http://googleads.g.doubleclick.net http://cdn.voximplant.com; style-src 'self' 'unsafe-inline' http://code.jivosite.com:* http://mc.yandex.ru:* http://*.googleapis.com http://*.gstatic.com:*; img-src 'self' data: http://code.jivosite.com:* http://mc.yandex.ru:* http://*.googleapis.com http://*.gstatic.com:* http://www.google-analytics.com; font-src 'self' http://*.gstatic.com:*;",
                $nameHeader
            ));
 
        }
 
    }
 
}

Код выше — это обработчик для 1С-Битрикс. Чтобы он заработал, его нужно сохранить в файл, например, по пути /local/php_interface/classes/handlers/headers.php, добавить в автозагрузку классов (в файле init.php вашего сайта):

\Bitrix\Main\Loader::registerAutoLoadClasses(null, array(
    '\OlegPro\Headers' => '/local/php_interface/classes/handlers/headers.php',
    )
);

А также навесить обработчик на событие OnEpilog главного модуля (в файле init.php вашего сайта):

$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandlerCompatible('main', 'OnEpilog', 
    array('\OlegPro\Headers', 'addForFilter'));

Для иных движков не трудно выдернуть нужное.

Хороший конструктор Content Security Policy правил.