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