Files
rf4-spotter/docs/csp-inventory.md
T
ik c93c6adc7a
CI / backend-and-migrations (push) Canceled after 0s
CI / astro-build (push) Canceled after 0s
CI / dependency-audit (push) Canceled after 0s
CI / compose-e2e (push) Canceled after 0s
security: restrict production content origins
2026-09-13 09:33:39 +07:00

1.9 KiB

CSP inventory

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

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

  • динамический JSON-LD в Layout.astro;
  • inline bootstrap в report.astro и spots/[id].astro;
  • page scripts главной и трёх admin-экранов;
  • scoped <style> Astro-компонентов;
  • вычисляемые CSS custom properties для шкалы активности и timeline.

Текущая CSP поэтому временно допускает unsafe-inline отдельно для script/style elements и style attributes. Inline event handlers запрещены script-src-attr 'none'; unsafe-eval, wildcard, HTTP и сторонние connect/script origin отсутствуют.

Путь к nonce/hash

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