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

22 lines
1.9 KiB
Markdown

# 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 для устранения ошибок.