PassFront
  1. PassFront
  2. База знаний
  3. DOM и браузер

Как настроить CSP?

DOM и браузер

CSP настраивают через HTTP-заголовок `Content-Security-Policy` (или meta-тег), задавая директивы источников для каждого типа ресурсов.

Как задать

HTTP-заголовок (предпочтительно)

Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com; style-src 'self' 'unsafe-inline'; img-src *

Meta-тег (если нет доступа к заголовкам)

<meta http-equiv="Content-Security-Policy" content="default-src 'self'">

Основные директивы

  • default-src — источник по умолчанию для всех типов.
  • script-src — откуда грузить/выполнять скрипты.
  • style-src, img-src, font-src, connect-src (fetch/XHR/WS), frame-src.
  • frame-ancestors — кто может встраивать сайт в iframe (защита от clickjacking).

Значения источников

  • 'self' — свой origin.
  • 'none' — запретить всё.
  • Конкретные домены, * (осторожно).
  • 'unsafe-inline', 'unsafe-eval' — разрешить инлайн/eval (ослабляет защиту, избегать для скриптов).
  • nonce/hash — разрешить конкретные инлайн-скрипты безопасно.
script-src 'self' 'nonce-abc123';
<script nonce="abc123">...</script>

Внедрение

Начать в режиме Content-Security-Policy-Report-Only (только отчёты без блокировки), собрать нарушения, затем включить блокировку.

Коротко для собеседования

CSP задают заголовком Content-Security-Policy (или meta) с директивами источников: default-src, script-src, style-src, frame-ancestors и др. Избегать 'unsafe-inline'/'unsafe-eval', для нужных инлайн-скриптов — nonce/hash. Внедряют через Report-Only, затем включают блокировку.

Другие вопросы раздела