2.2 KiB
2.2 KiB
CSP inventory
Проверено 13 сентября 2026 года. Production не требует произвольных внешних origin: browser API-запросы идут на текущий домен, изображения скриншотов — только на FILES_DOMAIN, шрифты и сборка Astro — локальные.
Временные inline-зависимости
- динамический JSON-LD в
Layout.astroостаётся единственным намеренно inline script; - вычисляемые CSS custom properties для шкалы активности и timeline.
Vite собирает даже малые page scripts и scoped Astro styles в same-origin _astro assets (assetsInlineLimit: 0). Поэтому style-src уже ограничен 'self'; временный unsafe-inline остаётся только для динамического JSON-LD в script-src и вычисляемых style attributes. Inline event handlers запрещены script-src-attr 'none'; unsafe-eval, wildcard, HTTP и сторонние connect/script origin отсутствуют.
Путь к nonce/hash
- Page scripts перенесены в собираемые клиентские модули; конфигурация формы передаётся через безопасный
data-state. Нулевой inline limit запрещает Vite встраивать малые модули обратно в HTML. - JSON-LD либо хэшировать на уровне SSR-заголовка, либо выдавать nonce из web-runtime; статический nonce запрещён.
- Scoped styles уже находятся в скомпилированных
_astroassets, иunsafe-inlineудалён изstyle-src; вычисляемые значения заменить классами/data-*. - Удалить
unsafe-inlineизscript-srcпосле решения JSON-LD;style-src-attrубрать последним. - Проверить report, spots, admin, JSON-LD и signed screenshots в production bootstrap. Не добавлять
blob:,*или произвольные CDN для устранения ошибок.