CSP Конструктор

Content-Security-Policy Конструктор

Версия заголовка
 В данный момент рекомендуется использовать стандарт заголовка CSP Level 2

Часть современных браузеров уже поддерживает новый разрабатываемый стандарт CSP. При необходимости можно начать использовать новый функционал при сохранении обратной совместимости с действующим стандартом.
Соединения
Блокируются любые попытки отправить данные с защищаемой странице.
Цели соединений
Данные с защищаемой страницы разрешено отправлять на любой сайт.

Данные с защищаемой страницы разрешено отправлять только на исходный сайт.

Данные со страницы разрешено отправлять на указанные сайты.
При формировании отчёта о нарушении прикладывать пример кода, который вызвал нарушение. При наличии технической возможности в отчёте будут присутствовать первые 40 символов проблемного кода.
Шрифты
Никакие внешние шрифты не будут загружаться и не будут применяться на защищаемой странице.
Источники шрифтов
Разрешается загружать и использовать шрифты, размещённые на любых сайтах. Например, с помощью CSS-правила @font-face:
@font-face{ …; src: url("https://чужой-сайт.com/font.ttf"); }

Разрешается подключать и использовать файлы шрифтов, размещённые только на исходном сайте. Например, с помощью CSS-правила @font-face:
@font-face{ …; src: url("/font.ttf"); }

С этих сайтов также будет разрешена загрузка файлов шрифтов.
При формировании отчёта о нарушении прикладывать пример кода, который вызвал нарушение. При наличии технической возможности в отчёте будут присутствовать первые 40 символов проблемного кода.
Фреймы
Блокируется размещение любых фреймов на защищаемой странице.
Источники фреймов
В качестве источника фрейма разрешается использовать файлы, размещённые на любых сайтах.

В качестве источника фрейма разрешается использовать файлы, размещённые только на исходном сайте.

С этих сайтов также будет разрешена загрузка файлов, отображаемых во фреймах.
При формировании отчёта о нарушении прикладывать пример кода, который вызвал нарушение. При наличии технической возможности в отчёте будут присутствовать первые 40 символов проблемного кода.
Изображения
Никакие изображения не будут загружаться и не будут отображаться на защищаемой странице.
Источники изображений
Разрешается загружать и использовать изображения, размещённые на любых сайтах. Например, с помощью HTML-элемента <img>:
<img src="https://чужой-сайт.com/image.png">
HTML-элемента <link>:
<link rel="preload" href="https://чужой-сайт.com/image.png" as="image">
или CSS *-image правил:
background-image: url("https://чужой-сайт.com/image.png");

Разрешается подключать и использовать файлы скриптов, размещённые только на исходном сайте. Например, с помощью HTML-элемента <img>:
<img src="/image.png">
HTML-элемента <link>:
<link rel="preload" href="/image.png" as="image">
или CSS *-image правил:
background-image: url("/image.png");

С этих сайтов также будет разрешена загрузка файлов изображений любым способом.

Разрешается использовать изображения, встроенные непосредственно в документ:
<img src="data:…">
или в CSS *-image правил:
background-image: url("data:…");
При формировании отчёта о нарушении прикладывать пример кода, который вызвал нарушение. При наличии технической возможности в отчёте будут присутствовать первые 40 символов проблемного кода.
Скрипты
Никакие скрипты не будут загружаться и не будут выполняться на защищаемой странице.
Источники скриптов
Разрешается подключать и использовать файлы скриптов, размещённые на любых сайтах. Например, с помощью HTML-элемента <script>:
<script src="https://чужой-сайт.com/script.js"><script>
или с помощью HTML-элемента <link>:
<link rel="preload" href="https://чужой-сайт.com/script.js" as="script">

Разрешается подключать и использовать файлы скриптов, размещённые только на исходном сайте. Например, с помощью HTML-элемента <script>:
<script src="/script.js"><script>
или с помощью HTML-элемента <link>:
<link rel="preload" href="/script.js" as="script">

С этих сайтов также будет разрешена загрузка файлов скриптов любым способом.

Разрешается использовать встроенные в документ скрипты:
<script>
 …
</script>
и JavaScript-навигацию:
<a href="javascript:…">

Разрешается использовать обработчики событий, объявленные через атрибуты HTML-элементов:
<tag onevent="">

Разрешается использовать вычисления выражений с помощью небезопасной функции eval( ):
eval("");
При формировании отчёта о нарушении прикладывать пример кода, который вызвал нарушение. При наличии технической возможности в отчёте будут присутствовать первые 40 символов проблемного кода.
Стили
Никакие стили не будут загружаться и не будут применяться к защищаемому документу.
Источники стилей
Разрешается подключать и использовать файлы таблиц стилей, размещённые на любых сайтах. Например, с помощью HTML-элемента <link>:
<link rel="stylesheet" href="https://чужой-сайт.com/style.css">
<link rel="preload" href="https://чужой-сайт.com/style.css" as="style">
или через CSS-правило @import:
@import url("https://чужой-сайт.com/style.css");

Разрешается подключать и использовать стилевые файлы, размещённые только на исходном сайте. Например, с помощью HTML-элемента <link>:
<link rel="stylesheet" href="/style.css">
<link rel="preload" href="/style.css" as="style">
или через CSS-правило @import:
@import url("/style.css");

С этих сайтов также будет разрешена загрузка стилевых файлов любым способом.

Разрешается использовать встроенные в документ таблицы стилей:
<style>
 …
</style>
В том числе и динамически создавать их на базе JavaScript-метода createElement:
document.createElement("style");

Разрешается использовать стили, объявленные в HTML-элементах через атрибут style:
<tag style="">
или установленные с помощью JavaScript-метода управления атрибутами setAttribute:
element.setAttribute("style", "");
При формировании отчёта о нарушении прикладывать пример кода, который вызвал нарушение. При наличии технической возможности в отчёте будут присутствовать первые 40 символов проблемного кода.
Отчёты о нарушении
В этом режиме нарушения безопасности обнаруживаются, но нарушители не блокируются. Рекомендуется использовать в самом начале настройки политики безопасности для оценки объёма проблемных транзакций.

Браузер пользователя формирует JSON-сообщение с описанием нарушения и передаёт его указанному скрипту.
Настройки отправки сообщений
Этот скрипт будет вызываться каждый раз, когда будет возникать нарушение. Скрипт будет получать данные о нарушении, которые можно сохранять в лог-файле и/или отправлять уведомление, например, на электронную почту.

PHP

Для скриптов, написанных на языке PHP, необходимо добавить строку с кодом в начало скрипта, до точки вывода основного контента.
header("Report-To: ");
header(": ");

Nginx

Для веб-сервера Nginx необходимо добавить строку с командой в файл конфигурации *.conf соответствующей секции server или location.
add_header Report-To "";

Apache

Для веб-сервера Apache необходимо добавить строку с командой в файл основной конфигурации httpd.conf или соответствующий файл .htaccess.
Header set Report-To ""

HTML-тег meta

В некоторых случаях правила безопасности контента удобнее размещать непосредственно в документе, в блоке мета-данных. Но этот способ имеет ограничения функциональности - в нём не предусмотрен режим отладки и не поддерживается отправка отчётов о нарушениях политики безопасности.
<meta http-equiv="Content-Security-Policy" content="">