Когда я писал про CSRF, то говорил что важно настроить CSP
(Content-Security-Policy
). Что это такое?
Content-Security-Policy
- это дополнительный уровень безопасности, который помогает обнаруживать и смягчать определенные типы атак, включая Cross Scripting
(XSS
) и атаки на инъекции данных. Эти атаки используются для всего: от кражи данных до повреждения сайта или распространения вредоносного ПО.
Чтобы включить CSP
, вам необходимо настроить веб-сервер для возврата HTTP-заголовка Content-Security-Policy
.
В качестве альтернативы может использоваться элемент meta
для настройки политики, например:
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https: // *; child-src 'none'" />
Администратор веб-сайта хочет, чтобы весь контент поступал из собственного источника сайта (это исключает субдомены).
Content-Security-Policy: default-src 'self'
Администратор веб-сайта хочет разрешить пользователям веб-приложения включать изображения из любого источника в свой собственный контент, но ограничивать аудио- или видеоматериалы доверенными поставщиками и все сценарии только для определенного сервера, на котором размещен доверенный код.
Content-Security-Policy: default-src 'self'; img-src *; media-src media1.com media2.com; script-src userscripts.example.com
Здесь по умолчанию содержимое разрешено только из источника документа со следующими исключениями:
media1.com
и media2.com
(а не из поддоменов этих сайтов).usercripts.example.com
.По умолчанию отчеты о нарушении не отправляются. Чтобы включить отчет о нарушении, вам нужно указать директиву политики report-uri
, предоставляя по крайней мере один URI для доставки отчетов:
Content-Security-Policy: default-src 'self'; report-uri reportcollector.example.com/collector;
Затем вам нужно настроить сервер для получения отчетов; он может хранить или обрабатывать их любым способом, который, по вашему мнению, является уместным.
JSON отчета содержит следующие данные:
blocked-uri
URI ресурса, который был заблокирован от загрузки по политике безопасности контента. Если заблокированный URI имеет другое происхождение, чем document-uri
, тогда заблокированный URI усекается, чтобы содержать только схему, хост и порт.disposition
Либо «enforce», либо «reporting» в зависимости от того, используется ли заголовок Content-Security-Policy-Report-Only или заголовок Content-Security-Policy.document-uri
URI документа, в котором произошло нарушение.effective-directive
Директива, чья информация вызвала нарушение.original-policy
Исходная политика, указанная в HTTP-заголовке Content-Security-Policy.referrer
Ссылка на документ, в котором произошло нарушение.script-sample
Первые 40 символов встроенного скрипта, обработчика события или стиля, вызвавшего нарушение.status-code
Код состояния HTTP ресурса, на котором был создан глобальный объект.violated-directive
Название раздела политики, которое было нарушено.