Files
rf4-spotter/docs/csp-inventory.md
T

2.2 KiB
Raw Blame History

CSP inventory

Проверено 13 сентября 2026 года. Production не требует произвольных внешних origin: browser API-запросы идут на текущий домен, изображения скриншотов — только на FILES_DOMAIN, шрифты и сборка Astro — локальные.

Временные inline-зависимости

  • динамический JSON-LD в Layout.astro остаётся единственным намеренно inline script;

Vite собирает даже малые page scripts и scoped Astro styles в same-origin _astro assets (assetsInlineLimit: 0). Динамические шкалы используют дискретные CSS-классы вместо style attributes, поэтому style-src ограничен 'self', а style-src-attr'none'. Временный unsafe-inline остаётся только для динамического JSON-LD в script-src. Inline event handlers запрещены script-src-attr 'none'; unsafe-eval, wildcard, HTTP и сторонние connect/script origin отсутствуют.

Путь к nonce/hash

  1. Page scripts перенесены в собираемые клиентские модули; конфигурация формы передаётся через безопасный data-state. Нулевой inline limit запрещает Vite встраивать малые модули обратно в HTML.
  2. JSON-LD либо хэшировать на уровне SSR-заголовка, либо выдавать nonce из web-runtime; статический nonce запрещён.
  3. Scoped styles находятся в скомпилированных _astro assets, вычисляемые шкалы используют классы с шагом 5%; inline-разрешения для styles и attributes удалены.
  4. Удалить последнее unsafe-inline из script-src после решения JSON-LD.
  5. Проверить report, spots, admin, JSON-LD и signed screenshots в production bootstrap. Не добавлять blob:, * или произвольные CDN для устранения ошибок.